Protect-CmsMessage

Mengenkripsi konten dengan menggunakan format Sintaks Pesan Kriptografi.

Sintaks

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>]

Deskripsi

Protect-CmsMessage Cmdlet mengenkripsi konten dengan menggunakan format Sintaks Pesan Kriptografi (CMS).

Cmdlet CMS mendukung enkripsi dan dekripsi konten menggunakan format IETF seperti yang didokumentasikan oleh RFC5652.

Standar enkripsi CMS menggunakan kriptografi kunci publik, di mana kunci yang digunakan untuk mengenkripsi konten (kunci publik) dan kunci yang digunakan untuk mendekripsi konten (kunci privat) terpisah. Kunci publik Anda dapat dibagikan secara luas, dan bukan data sensitif. Jika ada konten yang dienkripsi dengan kunci publik ini, hanya kunci privat Anda yang dapat mendekripsinya. Untuk informasi selengkapnya, lihat Kriptografi kunci publik.

Sebelum dapat menjalankan Protect-CmsMessage cmdlet, Anda harus menyiapkan sertifikat enkripsi. Untuk dikenali di PowerShell, sertifikat enkripsi memerlukan ID penggunaan kunci diperluas (EKU) unik untuk mengidentifikasinya sebagai sertifikat enkripsi data (seperti ID untuk Penandatanganan Kode dan Email Terenkripsi). Untuk contoh sertifikat yang akan berfungsi untuk enkripsi dokumen, lihat Contoh 1 dalam topik ini.

Dukungan untuk Linux dan macOS ditambahkan di PowerShell 7.1.

Contoh

Contoh 1: Membuat sertifikat untuk mengenkripsi konten

Sebelum dapat menjalankan Protect-CmsMessage cmdlet, Anda harus membuat sertifikat enkripsi. Menggunakan teks berikut, ubah nama di baris Subjek menjadi nama, email, atau pengidentifikasi lain Anda, dan simpan sertifikat dalam file (seperti , seperti DocumentEncryption.infyang diperlihatkan dalam contoh ini).

# 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.cer

Contoh 2: Mengenkripsi pesan yang dikirim melalui email

$Protected = "Hello World" | Protect-CmsMessage -To "*youralias@emailaddress.com*"

Dalam contoh berikut, Anda mengenkripsi pesan, "Halo Dunia", dengan memilahnya ke Protect-CmsMessage cmdlet, lalu menyimpan pesan terenkripsi dalam variabel. Parameter Kepada menggunakan nilai baris Subjek dalam sertifikat.

Contoh 3: Menampilkan sertifikat enkripsi dokumen

PS C:\> cd Cert:\CurrentUser\My
PS Cert:\CurrentUser\My> Get-ChildItem -DocumentEncryptionCert

Untuk melihat sertifikat enkripsi dokumen di penyedia sertifikat, Anda dapat menambahkan parameter dinamis DocumentEncryptionCert dari Get-ChildItem, hanya tersedia saat penyedia sertifikat dimuat.

Parameter

-Content

Menentukan PSObject yang berisi konten yang ingin Anda enkripsi. Misalnya, Anda dapat mengenkripsi konten pesan peristiwa, lalu menggunakan variabel yang berisi pesan ($Event, dalam contoh ini) sebagai nilai parameter Konten : $event = Get-WinEvent -ProviderName "PowerShell" -MaxEvents 1. Anda juga bisa menggunakan Get-Content cmdlet untuk mendapatkan konten file, seperti dokumen Microsoft Word, dan menyimpan konten dalam variabel yang Anda gunakan sebagai nilai parameter Konten .

Type:PSObject
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

Menentukan jalur ke konten yang ingin Anda enkripsi. Tidak seperti Path, nilai LiteralPath digunakan persis seperti yang ditik. Tidak ada karakter yang ditafsirkan sebagai kartubebas. Jika jalur menyertakan karakter escape, sertakan dalam tanda kutip tunggal. Tanda kutip tunggal memberi tahu PowerShell untuk tidak menginterpretasikan karakter apa pun sebagai urutan escape.

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-OutFile

Menentukan jalur dan nama file file yang ingin Anda kirimi isi terenkripsi.

Type:String
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Menentukan jalur ke konten yang ingin Anda enkripsi.

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-To

Menentukan satu atau beberapa penerima pesan CMS, yang diidentifikasi dalam salah satu format berikut:

  • Sertifikat aktual (seperti yang diambil dari penyedia sertifikat).
  • Jalur ke file yang berisi sertifikat.
  • Jalur ke direktori yang berisi sertifikat.
  • Thumbprint sertifikat (digunakan untuk mencari di penyimpanan sertifikat).
  • Nama subjek sertifikat (digunakan untuk melihat di penyimpanan sertifikat).
Type:CmsMessageRecipient[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False