Protect-CmsMessage
Chiffre le contenu à l’aide du format syntaxe des messages de chiffrement.
Syntaxe
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>]
Description
L’applet de commande Protect-CmsMessage
chiffre le contenu au format CMS (Cryptographic Message Syntax).
Les applets de commande CMS prennent en charge le chiffrement et le déchiffrement du contenu à l’aide du format IETF tel qu’documenté par RFC5652.
La norme de chiffrement CMS utilise le chiffrement à clé publique, où les clés utilisées pour chiffrer le contenu (la clé publique) et les clés utilisées pour déchiffrer le contenu (la clé privée) sont distinctes. Votre clé publique peut être partagée largement et n’est pas des données sensibles. Si un contenu est chiffré avec cette clé publique, seule votre clé privée peut la déchiffrer. Pour plus d’informations, consultez chiffrement à clé publique.
Avant de pouvoir exécuter l’applet de commande Protect-CmsMessage
, vous devez configurer un certificat de chiffrement.
Pour être reconnus dans PowerShell, les certificats de chiffrement nécessitent une utilisation unique des clés étendues (EKU) ID pour les identifier en tant que certificats de chiffrement de données (tels que les ID pour la signature de code et le courrier chiffré). Pour obtenir un exemple de certificat qui fonctionne pour le chiffrement de document, consultez l’exemple 1 dans cette rubrique.
La prise en charge de Linux et macOS a été ajoutée dans PowerShell 7.1.
Exemples
Exemple 1 : Créer un certificat pour le chiffrement du contenu
Avant de pouvoir exécuter l’applet de commande Protect-CmsMessage
, vous devez créer un certificat de chiffrement. À l’aide du texte suivant, remplacez le nom dans la ligne Objet par votre nom, e-mail ou autre identificateur, puis enregistrez le certificat dans un fichier (par exemple, DocumentEncryption.inf
, comme illustré dans cet exemple).
# 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
Exemple 2 : Chiffrer un message envoyé par e-mail
$Protected = "Hello World" | Protect-CmsMessage -To "*youralias@emailaddress.com*"
Dans l’exemple suivant, vous chiffrez un message, « Hello World », en le pipant vers l’applet de commande Protect-CmsMessage
, puis enregistrez le message chiffré dans une variable. Le paramètre To utilise la valeur de la ligne Objet dans le certificat.
Exemple 3 : Afficher les certificats de chiffrement de documents
PS C:\> cd Cert:\CurrentUser\My
PS Cert:\CurrentUser\My> Get-ChildItem -DocumentEncryptionCert
Pour afficher les certificats de chiffrement de documents dans le fournisseur de certificats, vous pouvez ajouter le DocumentEncryptionCert paramètre dynamique de Get-ChildItem, disponible uniquement lorsque le fournisseur de certificats est chargé.
Paramètres
-Content
Spécifie un PSObject qui contient du contenu que vous souhaitez chiffrer. Par exemple, vous pouvez chiffrer le contenu d’un message d’événement, puis utiliser la variable contenant le message ($Event
, dans cet exemple) comme valeur du paramètre Contenu : $event = Get-WinEvent -ProviderName "PowerShell" -MaxEvents 1
. Vous pouvez également utiliser l’applet de commande
Type: | PSObject |
Position: | 1 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-LiteralPath
Spécifie le chemin d’accès au contenu que vous souhaitez chiffrer. Contrairement à Path, la valeur de LiteralPath est utilisée exactement comme il est typé. Aucun caractère n’est interprété comme des caractères génériques. Si le chemin inclut des caractères d’échappement, placez-le entre guillemets simples. Les guillemets simples indiquent à PowerShell de ne pas interpréter de caractères comme séquences d’échappement.
Type: | String |
Position: | 1 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-OutFile
Spécifie le chemin d’accès et le nom de fichier d’un fichier auquel vous souhaitez envoyer le contenu chiffré.
Type: | String |
Position: | 2 |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Path
Spécifie le chemin d’accès au contenu que vous souhaitez chiffrer.
Type: | String |
Position: | 1 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-To
Spécifie un ou plusieurs destinataires de message CMS, identifiés dans l’un des formats suivants :
- Certificat réel (tel que récupéré à partir du fournisseur de certificats).
- Chemin d’accès au fichier contenant le certificat.
- Chemin d’accès à un répertoire contenant le certificat.
- Empreinte numérique du certificat (utilisée pour rechercher dans le magasin de certificats).
- Nom du sujet du certificat (utilisé pour rechercher dans le magasin de certificats).
Type: | CmsMessageRecipient[] |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |