Bảo vệ-CmsMessage (Microsoft.PowerShell.Security)
Protect-CmsMessage
- Mô-đun:
- Microsoft.PowerShell.Security
Mã hóa nội dung bằng cách sử dụng định dạng Cú pháp tin nhắn mật mã.
Cú pháp
Protect-CmsMessage
[-To] <CmsMessageRecipient[]>
[-Content] <PSObject>
[[-OutFile] <String>]
[<CommonParameters>]Protect-CmsMessage
[-To] <CmsMessageRecipient[]>
[-Path] <String>
[[-OutFile] <String>]
[<CommonParameters>]Protect-CmsMessage
[-To] <CmsMessageRecipient[]>
[-LiteralPath] <String>
[[-OutFile] <String>]
[<CommonParameters>]Sự miêu tả
Lệnh ghép ngắn Protect-CmsMessage mã hóa nội dung bằng cách sử dụng định dạng Cú pháp thông báo mật mã (CMS).
Lệnh ghép ngắn CMS hỗ trợ mã hóa và giải mã nội dung bằng định dạng IETF như được ghi lại bởi RFC5652.
Tiêu chuẩn mã hóa CMS sử dụng mật mã khóa chung, trong đó các khóa dùng để mã hóa nội dung (khóa chung) và khóa dùng để giải mã nội dung (khóa riêng) là riêng biệt. Khóa công khai của bạn có thể được chia sẻ rộng rãi và không phải là dữ liệu nhạy cảm. Nếu bất kỳ nội dung nào được mã hóa bằng khóa chung này thì chỉ có khóa riêng của bạn mới có thể giải mã được nội dung đó. Để biết thêm thông tin, hãy xem Mật mã khóa công khai.
Trước khi có thể chạy lệnh ghép ngắn Protect-CmsMessage, bạn phải thiết lập chứng chỉ mã hóa. Để được nhận dạng trong PowerShell, chứng chỉ mã hóa yêu cầu ID sử dụng khóa mở rộng (EKU) duy nhất để xác định chúng là chứng chỉ mã hóa dữ liệu (chẳng hạn như ID cho Ký mã và Thư được mã hóa). Để biết ví dụ về chứng chỉ có thể hoạt động để mã hóa tài liệu, hãy xem Ví dụ 1 trong chủ đề này.
Hỗ trợ cho Linux và macOS đã được thêm vào PowerShell 7.1.
Ví dụ
Ví dụ 1: Tạo chứng chỉ mã hóa nội dung
Trước khi có thể chạy lệnh ghép ngắn Protect-CmsMessage, bạn phải tạo chứng chỉ mã hóa. Sử dụng văn bản sau, thay đổi tên trong dòng Chủ đề thành tên, email hoặc số nhận dạng khác của bạn và lưu chứng chỉ vào một tệp (chẳng hạn như DocumentEncryption.inf, như được hiển thị trong ví dụ này).
# Create .INF file for certreq
{[Version]
Signature = "$Windows NT$"
[Strings]
szOID_ENHANCED_KEY_USAGE = "2.5.29.37"
szOID_DOCUMENT_ENCRYPTION = "1.3.6.1.4.1.311.80.1"
[NewRequest]
Subject = "cn=youralias@emailaddress.com"
MachineKeySet = false
KeyLength = 2048
KeySpec = AT_KEYEXCHANGE
HashAlgorithm = Sha1
Exportable = true
RequestType = Cert
KeyUsage = "CERT_KEY_ENCIPHERMENT_KEY_USAGE | CERT_DATA_ENCIPHERMENT_KEY_USAGE"
ValidityPeriod = "Years"
ValidityPeriodUnits = "1000"
[Extensions]
%szOID_ENHANCED_KEY_USAGE% = "{text}%szOID_DOCUMENT_ENCRYPTION%"
} | Out-File -FilePath DocumentEncryption.inf
# After you have created your certificate file, run the following command to add
# the certificate file to the certificate store. Now you are ready to encrypt and
# decrypt content with the next two examples.
certreq.exe -new DocumentEncryption.inf DocumentEncryption.cerVí dụ 2: Mã hóa tin nhắn gửi qua email
$Protected = "Hello World" | Protect-CmsMessage -To "*youralias@emailaddress.com*"Trong ví dụ sau, bạn mã hóa tin nhắn "Xin chào thế giới" bằng cách chuyển nó đến lệnh ghép ngắn Protect-CmsMessage, sau đó lưu tin nhắn được mã hóa vào một biến. Tham số To sử dụng giá trị của dòng Chủ đề trong chứng chỉ.
Ví dụ 3: Xem chứng chỉ mã hóa tài liệu
PS C:\> cd Cert:\CurrentUser\My
PS Cert:\CurrentUser\My> Get-ChildItem -DocumentEncryptionCertĐể xem chứng chỉ mã hóa tài liệu trong nhà cung cấp chứng chỉ, bạn có thể thêm tham số động DocumentEncryptionCert của Get-ChildItem, chỉ khả dụng khi nhà cung cấp chứng chỉ được tải.
Thông số
-Content
Chỉ định một PSObject chứa nội dung bạn muốn mã hóa. Ví dụ: bạn có thể mã hóa nội dung của thông báo sự kiện, sau đó sử dụng biến chứa thông báo ($Event, trong ví dụ này) làm giá trị của tham số Nội dung : $event=Get-WinEvent -ProviderName "PowerShell" -MaxEvents 1. Bạn cũng có thể sử dụng lệnh ghép ngắn Get-Content để lấy nội dung của một tệp, chẳng hạn như tài liệu Microsoft Word và lưu nội dung đó vào một biến mà bạn sử dụng làm giá trị của Nội dung tham số .
- Kiểu :
PSObject
- Chức vụ:
1
- Giá trị mặc định:
None
- Yêu cầu:
True
- Chấp nhận đầu vào đường ống:
True
- Chấp nhận ký tự đại diện:
-
False
-LiteralPath
Chỉ định đường dẫn đến nội dung mà bạn muốn mã hóa. Không giống như Path, giá trị của LiteralPath được sử dụng chính xác như được nhập. Không có ký tự nào được hiểu là ký tự đại diện. Nếu đường dẫn bao gồm các ký tự thoát, hãy đặt nó trong dấu ngoặc đơn. Dấu ngoặc đơn yêu cầu PowerShell không diễn giải bất kỳ ký tự nào dưới dạng chuỗi thoát.
- Kiểu :
String
- Chức vụ:
1
- Giá trị mặc định:
None
- Yêu cầu:
True
- Chấp nhận đầu vào đường ống:
False
- Chấp nhận ký tự đại diện:
False
-OutFile
Chỉ định đường dẫn và tên tệp của tệp mà bạn muốn gửi nội dung được mã hóa.
- Kiểu :
String
- Chức vụ:
-
2
- Giá trị mặc định:
None
- Yêu cầu:
False
- Chấp nhận đầu vào đường ống:
False
- Chấp nhận ký tự đại diện:
False
-Path
Chỉ định đường dẫn đến nội dung mà bạn muốn mã hóa.
- Kiểu :
String
- Chức vụ:
1
- Giá trị mặc định:
None
- Yêu cầu:
True
- Chấp nhận đầu vào đường ống:
False
- Chấp nhận ký tự đại diện:
False
-To
Chỉ định một hoặc nhiều người nhận tin nhắn CMS, được xác định theo bất kỳ định dạng nào sau đây:
- Chứng chỉ thực tế (được lấy từ nhà cung cấp chứng chỉ).
- Đường dẫn tới file chứa chứng chỉ.
- Đường dẫn đến thư mục chứa chứng chỉ.
- Dấu vân tay của chứng chỉ (được sử dụng để tìm trong kho chứng chỉ).
- Tên chủ đề của chứng chỉ (dùng để tìm trong kho chứng chỉ).
- Kiểu :
CmsMessageRecipient[]
- Chức vụ:
0
- Giá trị mặc định:
None
- Yêu cầu:
True
- Chấp nhận đầu vào đường ống:
False
- Chấp nhận ký tự đại diện:
False