Protect-CmsMessage
Şifreleme İletisi Söz Dizimi biçimini kullanarak içeriği şifreler.
Syntax
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>]
Description
Cmdlet, Protect-CmsMessage
Şifreleme İletisi Söz Dizimi (CMS) biçimini kullanarak içeriği şifreler.
CMS cmdlet'leri, RFC5652 tarafından belgelendiği gibi IETF biçimini kullanarak içeriğin şifrelenmesini ve şifresinin çözülmesini destekler.
CMS şifreleme standardı, içeriği şifrelemek için kullanılan anahtarların (ortak anahtar) ve içeriğin şifresini çözmek için kullanılan anahtarların (özel anahtar) ayrı olduğu ortak anahtar şifrelemesini kullanır. Ortak anahtarınız yaygın olarak paylaşılabilir ve hassas veriler değildir. Herhangi bir içerik bu ortak anahtarla şifrelenirse, yalnızca özel anahtarınız şifreyi çözebilir. Daha fazla bilgi için bkz . Ortak anahtar şifrelemesi.
cmdlet'ini Protect-CmsMessage
çalıştırabilmeniz için önce bir şifreleme sertifikası ayarlamanız gerekir.
PowerShell'de tanınmak için şifreleme sertifikaları, bunları veri şifreleme sertifikaları (Kod İmzalama ve Şifrelenmiş Posta kimlikleri gibi) olarak tanımlamak için benzersiz bir genişletilmiş anahtar kullanımı (EKU) kimliği gerektirir. Belge şifrelemesi için çalışacak bir sertifika örneği için bu konudaki Örnek 1'e bakın.
PowerShell 7.1'de Linux ve macOS desteği eklendi.
Örnekler
Örnek 1: İçeriği şifrelemek için sertifika oluşturma
cmdlet'ini Protect-CmsMessage
çalıştırabilmeniz için önce bir şifreleme sertifikası oluşturmanız gerekir. Aşağıdaki metni kullanarak Konu satırındaki adı adınız, e-postanız veya başka bir tanımlayıcıyla değiştirin ve sertifikayı bir dosyaya kaydedin (örneğin, bu örnekte gösterildiği gibi DocumentEncryption.inf
).
# 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
Örnek 2: E-postayla gönderilen iletiyi şifreleme
$Protected = "Hello World" | Protect-CmsMessage -To "*youralias@emailaddress.com*"
Aşağıdaki örnekte, "Merhaba Dünya" iletisini cmdlet'ine Protect-CmsMessage
ileterek şifreler ve ardından şifrelenmiş iletiyi bir değişkene kaydedersiniz. To parametresi, sertifikadaki Konu satırının değerini kullanır.
Örnek 3: Belge şifreleme sertifikalarını görüntüleme
PS C:\> cd Cert:\CurrentUser\My
PS Cert:\CurrentUser\My> Get-ChildItem -DocumentEncryptionCert
Sertifika sağlayıcısında belge şifreleme sertifikalarını görüntülemek için Get-ChildItem'in DocumentEncryptionCert dinamik parametresini ekleyebilirsiniz; bu parametre yalnızca sertifika sağlayıcısı yüklendiğinde kullanılabilir.
Parametreler
-Content
Şifrelemek istediğiniz içeriği içeren bir PSObject belirtir. Örneğin, bir olay iletisinin içeriğini şifreleyebilir ve ardından content parametresinin değeri olarak (bu örnekte) iletiyi$Event
içeren değişkeni kullanabilirsiniz: $event = Get-WinEvent -ProviderName "PowerShell" -MaxEvents 1
. Cmdlet'ini Get-Content
kullanarak microsoft Word belgesi gibi bir dosyanın içeriğini alabilir ve içeriği content parametresinin değeri olarak kullandığınız bir değişkene kaydedebilirsiniz.
Type: | PSObject |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Şifrelemek istediğiniz içeriğin yolunu belirtir. Yol'un aksine, LiteralPath değeri tam olarak yazıldığı gibi kullanılır. Hiçbir karakter joker karakter olarak yorumlanmamıştır. Yol kaçış karakterleri içeriyorsa, tek tırnak içine alın. Tek tırnak işaretleri PowerShell'e hiçbir karakteri kaçış dizisi olarak yorumlamaması gerektiğini söyler.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OutFile
Şifrelenmiş içeriği göndermek istediğiniz dosyanın yolunu ve dosya adını belirtir.
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Şifrelemek istediğiniz içeriğin yolunu belirtir.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-To
Aşağıdaki biçimlerden herhangi birinde tanımlanan bir veya daha fazla CMS ileti alıcısını belirtir:
- Gerçek bir sertifika (sertifika sağlayıcısından alınan şekilde).
- Sertifikayı içeren dosyanın yolu.
- Sertifikayı içeren dizinin yolu.
- Sertifikanın parmak izi (sertifika deposuna bakmak için kullanılır).
- Sertifikanın konu adı (sertifika deposuna bakmak için kullanılır).
Type: | CmsMessageRecipient[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
İlişkili Bağlantılar
PowerShell
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin