Bagikan melalui


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

cmdlet Protect-CmsMessage 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 cmdlet Protect-CmsMessage, Anda harus menyiapkan sertifikat enkripsi. Untuk dikenali di PowerShell, sertifikat enkripsi memerlukan ID penggunaan kunci diperluas yang unik (EKU) 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 cmdlet Protect-CmsMessage, 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 DocumentEncryption.inf, seperti yang ditunjukkan 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 cmdlet Protect-CmsMessage, lalu menyimpan pesan terenkripsi dalam variabel. Parameter Untuk 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 DocumentEncryptionCertGet-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 cmdlet Get-Content untuk mendapatkan konten file, seperti dokumen Microsoft Word, dan menyimpan konten dalam variabel yang Anda gunakan sebagai nilai parameter Konten.

Jenis:PSObject
Position:1
Nilai default:None
Diperlukan:True
Terima input alur:True
Terima karakter wildcard:False

-LiteralPath

Menentukan jalur ke konten yang ingin Anda enkripsi. Tidak seperti Path, nilai LiteralPath digunakan persis seperti yang diketik. 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.

Jenis:String
Position:1
Nilai default:None
Diperlukan:True
Terima input alur:False
Terima karakter wildcard:False

-OutFile

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

Jenis:String
Position:2
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-Path

Menentukan jalur ke konten yang ingin Anda enkripsi.

Jenis:String
Position:1
Nilai default:None
Diperlukan:True
Terima input alur:False
Terima karakter wildcard: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).
Jenis:CmsMessageRecipient[]
Position:0
Nilai default:None
Diperlukan:True
Terima input alur:False
Terima karakter wildcard:False