Delen via


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.