Protect-CmsMessage
Şifreleme İletisi Söz Dizimi biçimini kullanarak içeriği şifreler.
Sözdizimi
ByContent EnterprisePublishing
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>]
Description
Protect-CmsMessage cmdlet'i, Kriptografik Mesaj Söz Dizimi (CMS) biçimini kullanarak içeriği şifreler.
CMS cmdlet'leri, RFC5652tarafı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 şifreleme
Protect-CmsMessage cmdlet'ini çalıştırabilmeniz için önce bir şifreleme sertifikası ayarlamanız gerekir.
Şifreleme sertifikalarının PowerShell'de tanınması için benzersiz bir genişletilmiş anahtar kullanımı (EKU) kimliği gerekir. Bu kimlikler, veri şifreleme sertifikaları (Kod İmzalama ve Şifrelenmiş Posta kimlikleri gibi) olarak tanımlanabilir. 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
Protect-CmsMessage cmdlet'ini ç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, "Hello World" iletisini Protect-CmsMessage cmdlet'ine 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, yalnızca Sertifika sağlayıcısı yüklendiğinde kullanılabilen Get-ChildItem'in DocumentEncryptionCert dinamik parametresini ekleyebilirsiniz.
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 $Event parametresinin değeri olarak iletiyi (bu örnekte) içeren değişkeni kullanabilirsiniz: $event = Get-WinEvent -ProviderName "PowerShell" -MaxEvents 1. Ayrıca Get-Content cmdlet'ini 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.
Parametre özellikleri
| Tür: | PSObject |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
ByContent
| Position: | 1 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | True |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-LiteralPath
Şifrelemek istediğiniz içeriğin yolunu belirtir. Path'in 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, yolu tek tırnak işaretleriyle çevreleyin. Tek tırnak işaretleri, PowerShell'in hiçbir karakteri kaçış dizisi olarak yorumlamamasını sağlar.
Parametre özellikleri
| Tür: | String |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
ByLiteralPath
| Position: | 1 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-OutFile
Şifrelenmiş içeriği göndermek istediğiniz dosyanın yolunu ve dosya adını belirtir.
Parametre özellikleri
| Tür: | String |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | 2 |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-Path
Şifrelemek istediğiniz içeriğin yolunu belirtir.
Parametre özellikleri
| Tür: | String |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
ByPath
| Position: | 1 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | 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.
- Sertifika içeren dizinin yolu.
- Sertifikanın parmak izi (sertifika deposunda arama yapmak için kullanılır).
- Sertifikanın konu adı (sertifika mağazasında arama yapmak için kullanılır).
Parametre özellikleri
| Tür: | |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | 0 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
CommonParameters
Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.