Koruma-CmsMessage (Microsoft.PowerShell.Security)
Protect-CmsMessage
- Modül:
- Microsoft.PowerShell.Security
Şifreleme İletisi Sözdizimi biçimini kullanarak içeriği şifreler.
Sözdizimi
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>]Tanım
Protect-CmsMessage cmdlet'i, Şifreleme İletisi Söz Dizimi (CMS) biçimini kullanarak içeriği şifreler.
CMS cmdlet'leri, RFC5652 tarafından belgelendiği gibi IETF formatını kullanarak içeriğin şifrelenmesini ve şifresinin çözülmesini destekler.
CMS şifreleme standardı, içeriği şifrelemek için kullanılan anahtarların (genel anahtar) ve içeriğin şifresini çözmek için kullanılan anahtarların (özel anahtar) ayrı olduğu genel anahtar şifrelemesini kullanır. Genel anahtarınız geniş çapta paylaşılabilir ve hassas veriler değildir. Herhangi bir içerik bu genel anahtarla şifrelenmişse, yalnızca sizin özel anahtarınız bu içeriğin şifresini çözebilir. Daha fazla bilgi için bkz. Genel anahtar şifrelemesi.
Protect-CmsMessage cmdlet'ini çalıştırmadan önce bir şifreleme sertifikasını ayarlamanız gerekir. PowerShell'de tanınmak için, şifreleme sertifikalarının veri şifreleme sertifikaları (Kod İmzalama ve Şifreli Posta kimlikleri gibi) olarak tanımlanması için benzersiz bir genişletilmiş anahtar kullanımı (EKU) kimliği gerekir. Belge şifrelemede işe yarayacak bir sertifika örneği için bu konudaki Örnek 1'e bakın.
PowerShell 7.1'e Linux ve macOS desteği eklendi.
Örnekler
Örnek 1: İçeriği şifrelemek için bir sertifika oluşturma
Protect-CmsMessage cmdlet'ini çalıştırmadan ö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 (bu örnekte gösterildiği gibi DocumentEncryption.inf gibi).
# 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 bir mesajı şifreleme
$Protected = "Hello World" | Protect-CmsMessage -To "*youralias@emailaddress.com*"Aşağıdaki örnekte, "Merhaba Dünya" mesajını Protect-CmsMessage cmdlet'ine yönlendirerek şifrelersiniz ve ardından şifrelenmiş mesajı bir değişkene kaydedersiniz. Kime parametresi, sertifikadaki Konu satırının değerini kullanır.
Örnek 3: Belge şifreleme sertifikalarını görüntüleyin
PS C:\> cd Cert:\CurrentUser\My
PS Cert:\CurrentUser\My> Get-ChildItem -DocumentEncryptionCertSertifika sağlayıcısındaki belge şifreleme sertifikalarını görüntülemek için, yalnızca sertifika sağlayıcı yüklendiğinde kullanılabilen Get-ChildItem'in DocumentEncryptionCert dinamik parametresini ekleyebilirsiniz.
Parametreler
-Content
Şifrelemek istediğiniz içeriği içeren bir PSObject'i belirtir. Örneğin, bir etkinlik mesajının içeriğini şifreleyebilir ve ardından mesajı içeren değişkeni (bu örnekte $Event) Content parametresinin değeri olarak kullanabilirsiniz. : $event=Get-WinEvent -ProviderName "PowerShell" -MaxEvents 1. Microsoft Word belgesi gibi bir dosyanın içeriğini almak için Get-Content cmdlet'ini de kullanabilir ve içeriği Content'in değeri olarak kullandığınız bir değişkene kaydedebilirsiniz. parametresi.
- Tip :
PSObject
- Konum:
1
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
-
False
-LiteralPath
Şifrelemek istediğiniz içeriğin yolunu belirtir. Path'ten farklı olarak LiteralPath'in değeri tam olarak yazıldığı gibi kullanılır. Hiçbir karakter joker karakter olarak yorumlanmaz. Yol kaçış karakterleri içeriyorsa, onu tek tırnak işaretleri içine alın. Tek tırnak işaretleri PowerShell'e hiçbir karakteri kaçış dizisi olarak yorumlamamasını söyler.
- Tip :
String
- Konum:
1
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-OutFile
Şifrelenmiş içeriği göndermek istediğiniz dosyanın yolunu ve dosya adını belirtir.
- Tip :
String
- Konum:
-
2
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-Path
Şifrelemek istediğiniz içeriğin yolunu belirtir.
- Tip :
String
- Konum:
1
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-To
Aşağıdaki formatlardan herhangi birinde tanımlanan bir veya daha fazla CMS mesajı alıcısını belirtir:
- Gerçek bir sertifika (sertifika sağlayıcısından alındığı şekliyle).
- 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).
- Tip :
CmsMesajAlıcı[]
- Konum:
0
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False