Bagikan melalui


Protect-CmsMessage

Mengenkripsi konten dengan menggunakan format Sintaks Pesan Kriptografi.

Sintaks

ByContent (Default)

Protect-CmsMessage
    [-To] <CmsMessageRecipient[]>
    [-Content] <PSObject>
    [[-OutFile] <String>]
    [<CommonParameters>]

ByPath

Protect-CmsMessage
    [-To] <CmsMessageRecipient[]>
    [-Path] <String>
    [[-OutFile] <String>]
    [<CommonParameters>]

ByLiteralPath

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 (, dalam contoh ini) sebagai nilai parameter Konten : . Anda juga bisa menggunakan cmdlet untuk mendapatkan konten file, seperti dokumen Microsoft Word, dan menyimpan konten dalam variabel yang Anda gunakan sebagai nilai parameter Konten .

Properti parameter

Jenis:PSObject
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

ByContent
Position:1
Wajib:True
Nilai dari alur:True
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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 wildcard. Jika jalur menyertakan karakter escape, bungkus jalur tersebut dalam tanda kutip tunggal. Tanda kutip tunggal memberi tahu PowerShell untuk tidak menginterpretasikan karakter apa pun sebagai urutan escape.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

ByLiteralPath
Position:1
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-OutFile

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

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:2
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Path

Menentukan jalur ke konten yang ingin Anda enkripsi.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

ByPath
Position:1
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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).

Properti parameter

Jenis:

CmsMessageRecipient[]

Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:0
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

CommonParameters

Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.