Protect-CmsMessage
Šifruje obsah pomocí formátu syntaxe kryptografických zpráv.
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>]
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 popsáno v RFC5652.
Šifrovací standard CMS používá kryptografii s veřejným klíčem, kde klíče použité k šifrování obsahu (veřejný klíč) a klíče používané k dešifrování obsahu (privátní klíč) jsou oddělené. Váš veřejný klíč je možné sdílet široce a nejedná se o citlivá data. Pokud je pomocí tohoto veřejného klíče zašifrovaný nějaký obsah, může ho dešifrovat jenom váš privátní klíč. Další informace najdete v tématu Kryptografie s veřejným klíčem.
Před spuštěním rutiny Protect-CmsMessage
musíte mít nastavený šifrovací certifikát.
Aby bylo možné šifrovací certifikáty v PowerShellu rozpoznat, vyžadují jedinečné ID rozšířeného klíče (EKU), které je identifikuje jako certifikáty š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 tomto tématu v příkladu 1.
V PowerShellu 7.1 byla přidána podpora pro Linux a macOS.
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 na řá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
$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 s rutinou Protect-CmsMessage
a pak zašifrovanou zprávu uložíte do proměnné. Parametr To používá hodnotu řádku Předmět v certifikátu.
PS C:\> cd Cert:\CurrentUser\My
PS Cert:\CurrentUser\My> Get-ChildItem -DocumentEncryptionCert
Pokud chcete zobrazit certifikáty šifrování dokumentů ve zprostředkovateli certifikátu, můžete přidat dynamický parametr DocumentEncryptionCert rutiny Get-ChildItem, který je k dispozici pouze při načtení zprostředkovatele certifikátu.
Určuje objekt PSObject obsahující 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 ($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, jako je dokument Microsoft Word, a uložit obsah do proměnné, kterou použijete jako hodnotu parametru Content.
Type: | PSObject |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Určuje cestu k obsahu, který chcete zašifrovat. Na rozdíl od path 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, že nemá interpretovat žádné znaky jako řídicí sekvence.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Určuje cestu a název souboru, do kterého chcete odeslat šifrovaný obsah.
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Určuje cestu k obsahu, který chcete zašifrovat.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Určuje jednoho nebo více příjemců zprávy CMS identifikovaných v některém z následujících formátů:
- Skutečný certifikát (načtený od poskytovatele certifikátu).
- Cesta k souboru obsahujícímu certifikát
- Cesta k adresáři obsahujícímu certifikát.
- Kryptografický otisk certifikátu (slouží k vyhledání v úložišti certifikátů).
- Název subjektu certifikátu (slouží k vyhledání v úložišti certifikátů).
Type: | CmsMessageRecipient[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |