Sdílet prostřednictvím


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.infje 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 ($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 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