Protect-CmsMessage
Crittografa il contenuto usando il formato Sintassi del messaggio di crittografia.
Sintassi
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>]
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.
Il supporto per Linux e macOS è stato aggiunto in PowerShell 7.1.
Esempio
Esempio 1: Creare un certificato per crittografare il contenuto
Prima di poter eseguire il cmdlet Protect-CmsMessage
, è necessario creare un certificato di crittografia. Usando il testo seguente, modificare il nome nella riga Oggetto impostando il nome, il messaggio di posta elettronica o un altro identificatore e salvare 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 (
Tipo: | PSObject |
Posizione: | 1 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | 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 caratteri jolly. Se il percorso include caratteri di escape, racchiuderlo tra virgolette singole. Le virgolette singole indicano a PowerShell di non interpretare alcun carattere come sequenze di escape.
Tipo: | String |
Posizione: | 1 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-OutFile
Specifica il percorso e il nome file di un file a cui si desidera inviare il contenuto crittografato.
Tipo: | String |
Posizione: | 2 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Path
Specifica il percorso del contenuto da crittografare.
Tipo: | String |
Posizione: | 1 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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.
- Identificazione personale del certificato (usata per cercare nell'archivio certificati).
- Nome soggetto del certificato (usato per cercare nell'archivio certificati).
Tipo: | CmsMessageRecipient[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |