Protect-CmsMessage
Hiermee versleutelt u inhoud met behulp van de indeling Cryptografische berichtsyntaxis.
Syntaxis
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
De Protect-CmsMessage
cmdlet versleutelt inhoud met behulp van de CMS-indeling (Cryptographic Message Syntax).
De CMS-cmdlets ondersteunen versleuteling en ontsleuteling van inhoud met behulp van de IETF-indeling, zoals beschreven door RFC5652.
De CMS-versleutelingsstandaard maakt gebruik van cryptografie van openbare sleutels, waarbij de sleutels die worden gebruikt voor het versleutelen van inhoud (de openbare sleutel) en de sleutels die worden gebruikt om inhoud (de persoonlijke sleutel) te ontsleutelen, gescheiden zijn. Uw openbare sleutel kan op grote schaal worden gedeeld en zijn geen gevoelige gegevens. Als inhoud met deze openbare sleutel is versleuteld, kan alleen uw persoonlijke sleutel deze ontsleutelen. Zie openbare-sleutelcryptografievoor meer informatie.
Voordat u de Protect-CmsMessage
cmdlet kunt uitvoeren, moet u een versleutelingscertificaat hebben ingesteld.
Om te worden herkend in PowerShell, vereisen versleutelingscertificaten een uniek uitgebreid sleutelgebruik (EKU) id om ze te identificeren als gegevensversleutelingscertificaten (zoals de id's voor ondertekening van code en versleutelde e-mail). Zie voorbeeld 1 in dit onderwerp voor een voorbeeld van een certificaat dat geschikt is voor documentversleuteling.
Ondersteuning voor Linux en macOS is toegevoegd in PowerShell 7.1.
Voorbeelden
Voorbeeld 1: Een certificaat maken voor het versleutelen van inhoud
Voordat u de Protect-CmsMessage
cmdlet kunt uitvoeren, moet u een versleutelingscertificaat maken. Wijzig met de volgende tekst de naam in de onderwerpregel in uw naam, e-mailadres of andere id en sla het certificaat op in een bestand (zoals DocumentEncryption.inf
, zoals in dit voorbeeld).
# 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
Voorbeeld 2: Een bericht versleutelen dat is verzonden via e-mail
$Protected = "Hello World" | Protect-CmsMessage -To "*youralias@emailaddress.com*"
In het volgende voorbeeld versleutelt u een bericht' 'Hallo wereld', door dit door te sturen naar de Protect-CmsMessage
cmdlet en vervolgens het versleutelde bericht op te slaan in een variabele. De parameter Aan gebruikt de waarde van de onderwerpregel in het certificaat.
Voorbeeld 3: Documentversleutelingscertificaten weergeven
PS C:\> cd Cert:\CurrentUser\My
PS Cert:\CurrentUser\My> Get-ChildItem -DocumentEncryptionCert
Als u documentversleutelingscertificaten in de certificaatprovider wilt weergeven, kunt u de DocumentEncryptionCert toevoegen dynamische parameter van Get-ChildItem-, alleen beschikbaar wanneer de certificaatprovider wordt geladen.
Parameters
-Content
Hiermee geeft u een PSObject- die inhoud bevat die u wilt versleutelen. U kunt bijvoorbeeld de inhoud van een gebeurtenisbericht versleutelen en vervolgens de variabele met het bericht ($Event
, in dit voorbeeld) gebruiken als de waarde van de parameter Content: $event = Get-WinEvent -ProviderName "PowerShell" -MaxEvents 1
. U kunt ook de cmdlet Get-Content
gebruiken om de inhoud van een bestand, zoals een Microsoft Word-document, op te halen en de inhoud op te slaan in een variabele die u gebruikt als de waarde van de parameter Inhoud.
Type: | PSObject |
Position: | 1 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-LiteralPath
Hiermee geeft u het pad naar inhoud die u wilt versleutelen. In tegenstelling tot Pad, wordt de waarde van LiteralPath- exact gebruikt zoals deze is getypt. Er worden geen tekens geïnterpreteerd als jokertekens. Als het pad escapetekens bevat, plaatst u het tussen enkele aanhalingstekens. Enkele aanhalingstekens geven PowerShell aan dat er geen tekens als escapereeksen moeten worden geïnterpreteerd.
Type: | String |
Position: | 1 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-OutFile
Hiermee geeft u het pad en de bestandsnaam van een bestand waarnaar u de versleutelde inhoud wilt verzenden.
Type: | String |
Position: | 2 |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Path
Hiermee geeft u het pad naar inhoud die u wilt versleutelen.
Type: | String |
Position: | 1 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-To
Hiermee geeft u een of meer CMS-berichtontvangers op, geïdentificeerd in een van de volgende indelingen:
- Een echt certificaat (zoals opgehaald van de certificaatprovider).
- Pad naar het bestand met het certificaat.
- Pad naar een map met het certificaat.
- Vingerafdruk van het certificaat (gebruikt om in het certificaatarchief te zoeken).
- Onderwerpnaam van het certificaat (wordt gebruikt om in het certificaatarchief te zoeken).
Type: | CmsMessageRecipient[] |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |