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.inf
yang 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 |
Link Terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk