Condividi tramite


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.

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. 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 (, in questo esempio) come valore del parametro Content : . È anche possibile utilizzare il cmdlet per ottenere il contenuto di un file, ad esempio un documento di Microsoft Word, e salvare il contenuto in una variabile utilizzata come valore del parametro content .

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:

CmsMessageRecipient[]

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.