Protect-CmsMessage
Šifruje obsah pomocí formátu syntaxe kryptografických zpráv.
Syntaxe
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
Rutina Protect-CmsMessage
šifruje obsah pomocí formátu Cryptographic Message Syntax (CMS).
Rutiny CMS podporují šifrování a dešifrování obsahu pomocí formátu IETF, jak je zdokumentované RFC5652.
Šifrovací standard CMS používá kryptografii veřejného klíče, kde jsou klíče používané k šifrování obsahu (veřejného klíče) a klíče používané k dešifrování obsahu (privátního klíče) oddělené. Váš veřejný klíč je možné sdílet široce a nejedná se o citlivá data. Pokud je jakýkoli obsah zašifrovaný tímto veřejným klíčem, může ho dešifrovat jenom váš privátní klíč. Další informace naleznete v tématu Kryptografie veřejného klíče.
Před spuštěním rutiny Protect-CmsMessage
musíte mít nastavený šifrovací certifikát.
Aby bylo možné šifrovací certifikáty rozpoznat v PowerShellu, vyžadují jedinečné ID rozšířeného použití klíče (EKU), aby je identifikovaly jako šifrovací certifikáty dat (například ID pro podepisování kódu a šifrovanou poštu). Příklad certifikátu, který by fungoval pro šifrování dokumentu, najdete v příkladu 1 v tomto tématu.
Podpora pro Linux a macOS byla přidána v PowerShellu 7.1.
Příklady
Příklad 1: Vytvoření certifikátu pro šifrování obsahu
Před spuštěním rutiny Protect-CmsMessage
musíte vytvořit šifrovací certifikát. Pomocí následujícího textu změňte název v řádku Předmět na vaše jméno, e-mail nebo jiný identifikátor a uložte certifikát do souboru (například , jak DocumentEncryption.inf
je znázorněno v tomto příkladu).
# 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
Příklad 2: Šifrování zprávy odeslané e-mailem
$Protected = "Hello World" | Protect-CmsMessage -To "*youralias@emailaddress.com*"
V následujícím příkladu zašifrujete zprávu "Hello World" jejím propojením do Protect-CmsMessage
rutiny a pak zašifrovanou zprávu uložíte do proměnné. Parametr To používá hodnotu řádku Předmět v certifikátu.
Příklad 3: Zobrazení šifrovacích certifikátů dokumentů
PS C:\> cd Cert:\CurrentUser\My
PS Cert:\CurrentUser\My> Get-ChildItem -DocumentEncryptionCert
Chcete-li zobrazit certifikáty šifrování dokumentů ve zprostředkovateli certifikátu, můžete přidat dynamický parametr DocumentEncryptionCert Get-ChildItem, který je k dispozici pouze při načtení zprostředkovatele certifikátu.
Parametry
-Content
Určuje objekt PSObject obsahující obsah, který chcete šifrovat. Můžete například zašifrovat obsah zprávy události a pak použít proměnnou obsahující zprávu ($Event
v tomto příkladu) jako hodnotu parametru Content : $event = Get-WinEvent -ProviderName "PowerShell" -MaxEvents 1
. Pomocí rutiny Get-Content
můžete také získat obsah souboru, například dokument Microsoft Wordu, a uložit obsah do proměnné, kterou použijete jako hodnotu parametru Content .
Typ: | PSObject |
Position: | 1 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-LiteralPath
Určuje cestu k obsahu, který chcete šifrovat. Na rozdíl od cesty se hodnota LiteralPath používá přesně tak, jak je zadána. Žádné znaky nejsou interpretovány jako zástupné znaky. Pokud cesta obsahuje řídicí znaky, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, aby nepřekládaly žádné znaky jako řídicí sekvence.
Typ: | String |
Position: | 1 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-OutFile
Určuje cestu a název souboru, do kterého chcete šifrovaný obsah odeslat.
Typ: | String |
Position: | 2 |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Path
Určuje cestu k obsahu, který chcete šifrovat.
Typ: | String |
Position: | 1 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-To
Určuje jednoho nebo více příjemců zpráv CMS identifikovaných v některém z následujících formátů:
- Skutečný certifikát (načtený od zprostředkovatele certifikátu)
- Cesta k souboru obsahujícímu certifikát
- Cesta k adresáři obsahujícímu certifikát
- Kryptografický otisk certifikátu (použitý k vyhledání v úložišti certifikátů)
- Název subjektu certifikátu (slouží k vyhledání v úložišti certifikátů).
Typ: | CmsMessageRecipient[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |