Protect-CmsMessage
Hiermee versleutelt u inhoud met behulp van de indeling Cryptografische berichtsyntaxis.
Syntax
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 in RFC5652.
De CMS-versleutelingsstandaard maakt gebruik van openbare-sleutelcryptografie, waarbij de sleutels die worden gebruikt voor het versleutelen van inhoud (de openbare sleutel) en de sleutels die worden gebruikt voor het ontsleutelen van inhoud (de persoonlijke sleutel) gescheiden zijn. Uw openbare sleutel kan op grote schaal worden gedeeld en is geen gevoelige gegevens. Als inhoud is versleuteld met deze openbare sleutel, kan alleen uw persoonlijke sleutel deze ontsleutelen. Zie Cryptografie met openbare sleutels voor meer informatie.
Voordat u de Protect-CmsMessage
cmdlet kunt uitvoeren, moet u een versleutelingscertificaat hebben ingesteld.
Om te worden herkend in PowerShell, hebben versleutelingscertificaten een unieke EKU-id (Extended Key Usage) nodig om ze te identificeren als gegevensversleutelingscertificaten (zoals de id's voor code-ondertekening 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 Creatie voor het versleutelen van inhoud
Voordat u de Protect-CmsMessage
cmdlet kunt uitvoeren, moet u een versleutelingscertificaat maken. Gebruik de volgende tekst om de naam in de onderwerpregel te wijzigen 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 per e-mail wordt verzonden
$Protected = "Hello World" | Protect-CmsMessage -To "*youralias@emailaddress.com*"
In het volgende voorbeeld versleutelt u een bericht, 'Hallo wereld', door het 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 dynamische parameter DocumentEncryptionCert van Get-ChildItem toevoegen, die alleen beschikbaar is wanneer de certificaatprovider is geladen.
Parameters
-Content
Hiermee geeft u een PSObject dat 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 Inhoud : $event = Get-WinEvent -ProviderName "PowerShell" -MaxEvents 1
. U kunt de Get-Content
cmdlet ook gebruiken om de inhoud van een bestand op te halen, zoals een Microsoft Word-document, 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 |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Hiermee geeft u het pad naar inhoud die u wilt versleutelen. In tegenstelling tot Path wordt de waarde van LiteralPath precies gebruikt zoals deze is getypt. Geen tekens worden geïnterpreteerd als jokertekens. Als het pad escape-tekens bevat, plaatst u het tussen enkele aanhalingstekens. Enkele aanhalingstekens geven PowerShell aan dat geen tekens als escape-reeksen worden geïnterpreteerd.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OutFile
Hiermee geeft u het pad en de bestandsnaam op van een bestand waarnaar u de versleutelde inhoud wilt verzenden.
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Hiermee geeft u het pad naar inhoud die u wilt versleutelen.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | 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 dat het certificaat bevat.
- Pad naar een map met het certificaat.
- Vingerafdruk van het certificaat (gebruikt om te zoeken in het certificaatarchief).
- Onderwerpnaam van het certificaat (gebruikt om te zoeken in het certificaatarchief).
Type: | CmsMessageRecipient[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |