Protect-CmsMessage
Šifruje obsah pomocí formátu syntaxe kryptografických zpráv.
Syntaxe
ByContent (Výchozí)
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
Rutina Protect-CmsMessage šifruje obsah pomocí formátu CMS (Cryptographic Message Syntax).
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.
Než budete moct spustit rutinu Protect-CmsMessage, musíte mít nastavený šifrovací certifikát.
Aby byly v PowerShellu rozpoznány, potřebují šifrovací certifikáty jedinečný rozšířený identifikátor použití klíče (EKU), který je identifikuje jako certifikáty pro šifrování 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
Než budete moct spustit Protect-CmsMessage rutinu, 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 DocumentEncryption.inf, jak 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" tak, že ji zašifrujete do rutiny Protect-CmsMessage a pak zašifrovanou zprávu uložíte do proměnné. Parametr To používá hodnotu pole "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 DocumentEncryptionCert dynamický parametr Get-ChildItem, k dispozici pouze při načtení zprostředkovatele certifikátu.
Parametry
-Content
Určuje objekt PSObject, který obsahuje obsah, který chcete zašifrovat. Můžete například zašifrovat obsah zprávy události a pak použít proměnnou obsahující zprávu ($Eventv 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 aplikace Microsoft Word, a uložit obsah do proměnné, kterou použijete jako hodnotu parametru Content.
Vlastnosti parametru
| Typ: | PSObject |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
ByContent
| Position: | 1 |
| Povinné: | True |
| Hodnota z kanálu: | True |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-LiteralPath
Určuje cestu k obsahu, který chcete šifrovat. Na rozdíl od cestyse hodnota LiteralPath používá přesně tak, jak je zadána. Žádný znak není interpretován jako zástupný znak. Pokud cesta obsahuje únikové znaky, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, aby žádné znaky neinterpretoval jako únikové sekvence.
Vlastnosti parametru
| Typ: | String |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
ByLiteralPath
| Position: | 1 |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-OutFile
Určuje cestu a název souboru, do kterého chcete šifrovaný obsah odeslat.
Vlastnosti parametru
| Typ: | String |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | 2 |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-Path
Určuje cestu k obsahu, který chcete šifrovat.
Vlastnosti parametru
| Typ: | String |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
ByPath
| Position: | 1 |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | 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ý z poskytovatele certifikátů)
- Cesta k souboru obsahujícímu certifikát
- Cesta k adresáři obsahujícímu certifikát
- Otisk prstu certifikátu (používaný k vyhledávání v úložišti certifikátů)
- Název subjektu certifikátu (slouží k vyhledání v úložišti certifikátů).
Vlastnosti parametru
| Typ: | |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | 0 |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
CommonParameters
Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.