Protect-CmsMessage
Hiermee versleutelt u inhoud met behulp van de indeling Cryptografische berichtsyntaxis.
Syntax
ByContent (Standaard)
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
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.
Voorbeelden
Voorbeeld 1: Een certificaat maken voor het versleutelen van inhoud
# 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 -new DocumentEncryption.inf DocumentEncryption.cer
Voordat u de Protect-CmsMessage cmdlet kunt uitvoeren, moet u een versleutelingscertificaat maken.
Wijzig met behulp van 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 wordt weergegeven).
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
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.
Parametereigenschappen
| Type: | PSObject |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
ByContent
| Position: | 1 |
| Verplicht: | True |
| Waarde uit pijplijn: | True |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | 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 escape-tekens bevat, zet het dan tussen enkele aanhalingstekens. Enkele aanhalingstekens zorgen ervoor dat PowerShell geen tekens als escapesequenties interpreteert.
Parametereigenschappen
| Type: | String |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
ByLiteralPath
| Position: | 1 |
| Verplicht: | True |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-OutFile
Hiermee geeft u het pad en de bestandsnaam van een bestand waarnaar u de versleutelde inhoud wilt verzenden.
Parametereigenschappen
| Type: | String |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
(All)
| Position: | 2 |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-Path
Hiermee geeft u het pad naar inhoud die u wilt versleutelen.
Parametereigenschappen
| Type: | String |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
ByPath
| Position: | 1 |
| Verplicht: | True |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | 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).
Parametereigenschappen
| Type: | CmsMessageRecipient[] |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
(All)
| Position: | 0 |
| Verplicht: | True |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
CommonParameters
Deze cmdlet ondersteunt de algemene parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction en -WarningVariable. Zie about_CommonParametersvoor meer informatie.