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