Protect-CmsMessage
Crittografa il contenuto usando il formato Sintassi del messaggio di crittografia.
Sintassi
ByContent (Impostazione predefinita)
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>]
Descrizione
Il cmdlet Protect-CmsMessage crittografa il contenuto usando il formato CMS (Cryptographic Message Syntax).
I cmdlet CMS supportano la crittografia e la decrittografia del contenuto usando il formato IETF, come documentato da RFC5652.
Lo standard di crittografia CMS usa la crittografia a chiave pubblica, in cui le chiavi usate per crittografare il contenuto (la chiave pubblica) e le chiavi usate per decrittografare il contenuto (la chiave privata) sono separate. La chiave pubblica può essere condivisa ampiamente e non è dati sensibili. Se un contenuto è crittografato con questa chiave pubblica, solo la chiave privata può decrittografarla. Per altre informazioni, vedere crittografia a chiave pubblica.
Prima di poter eseguire il cmdlet Protect-CmsMessage, è necessario configurare un certificato di crittografia.
Per essere riconosciuti in PowerShell, i certificati di crittografia richiedono un utilizzo univoco delle chiavi estese (EKU) per identificarli come certificati di crittografia dei dati (ad esempio gli ID per la firma del codice e la posta crittografata). Per un esempio di certificato che funzionerebbe per la crittografia dei documenti, vedere l'esempio 1 in questo argomento.
Esempio
Esempio 1: Creare un certificato per crittografare il contenuto
Prima di poter eseguire il cmdlet Protect-CmsMessage, è necessario creare un certificato di crittografia. Utilizzando il testo seguente, modifica il nome nell'oggetto del messaggio con il tuo nome, indirizzo email o un altro identificatore e salva il certificato in un file, ad esempio DocumentEncryption.inf, come illustrato in questo esempio.
# 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
Esempio 2: Crittografare un messaggio inviato tramite posta elettronica
$Protected = "Hello World" | Protect-CmsMessage -To "*youralias@emailaddress.com*"
Nell'esempio seguente si crittografa un messaggio "Hello World", inviandolo al cmdlet Protect-CmsMessage e quindi salvare il messaggio crittografato in una variabile. Il parametro A usa il valore della riga Oggetto nel certificato.
Esempio 3: Visualizzare i certificati di crittografia dei documenti
PS C:\> cd Cert:\CurrentUser\My
PS Cert:\CurrentUser\My> Get-ChildItem -DocumentEncryptionCert
Per visualizzare i certificati di crittografia dei documenti nel provider di certificati, è possibile aggiungere il DocumentEncryptionCert parametro dinamico di Get-ChildItem, disponibile solo quando viene caricato il provider di certificati.
Parametri
-Content
Specifica un PSObject che contiene contenuto da crittografare. Ad esempio, è possibile crittografare il contenuto di un messaggio di evento e quindi usare la variabile contenente il messaggio (
Proprietà dei parametri
| Tipo: | PSObject |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
ByContent
| Posizione: | 1 |
| Obbligatorio: | True |
| Valore dalla pipeline: | True |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-LiteralPath
Specifica il percorso del contenuto da crittografare. A differenza di Path, il valore di LiteralPath viene usato esattamente come viene tipizzato. Nessun carattere viene interpretato come metacaratteri. Se il percorso include caratteri di escape, racchiudilo tra virgolette singole. Le virgolette singole indicano a PowerShell di non interpretare alcun carattere come sequenze di escape.
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
ByLiteralPath
| Posizione: | 1 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-OutFile
Specifica il percorso e il nome file di un file a cui si desidera inviare il contenuto crittografato.
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | 2 |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Path
Specifica il percorso del contenuto da crittografare.
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
ByPath
| Posizione: | 1 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-To
Specifica uno o più destinatari del messaggio CMS, identificati in uno dei formati seguenti:
- Un certificato effettivo (come recuperato dal provider di certificati).
- Percorso del file contenente il certificato.
- Percorso di una directory contenente il certificato.
- Impronta digitale del certificato (usata per cercare nell'archivio dei certificati).
- Nome del soggetto del certificato (usato per cercare nell'archivio dei certificati).
Proprietà dei parametri
| Tipo: | |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
CommonParameters
Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.