Protect-CmsMessage
Chiffre le contenu à l’aide du format syntaxe des messages de chiffrement.
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>]
L’applet Protect-CmsMessage
de commande 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 à grande échelle et ne constitue pas des données sensibles. Si du contenu est chiffré avec cette clé publique, seule votre clé privée peut le déchiffrer. Pour plus d’informations, consultez Cryptographie asymétrique.
Avant de pouvoir exécuter l’applet Protect-CmsMessage
de commande, vous devez configurer un certificat de chiffrement.
Pour être reconnus dans PowerShell, les certificats de chiffrement nécessitent un ID d’utilisation de clé étendue (EKU) unique 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.
Avant de pouvoir exécuter l’applet Protect-CmsMessage
de commande, 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 DocumentEncryption.inf
exemple, 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
$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 Protect-CmsMessage
de commande, puis enregistrez le message chiffré dans une variable. Le paramètre To utilise la valeur de la ligne Objet dans le certificat.
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 paramètre dynamique DocumentEncryptionCert de Get-ChildItem, disponible uniquement lorsque le fournisseur de certificats est chargé.
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 Content : $event = Get-WinEvent -ProviderName "PowerShell" -MaxEvents 1
. Vous pouvez également utiliser l’applet Get-Content
de commande pour obtenir le contenu d’un fichier, tel qu’un document Microsoft Word, et enregistrer le contenu dans une variable que vous utilisez comme valeur du paramètre Contenu .
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 |
Spécifie le chemin d’accès au contenu que vous souhaitez chiffrer. Contrairement à Path, la valeur de LiteralPath est utilisée exactement comme elle est typée. Aucun caractère n’est interprété en tant que caractère générique. Si le chemin d’accès inclut des caractères d’échappement, mettez-le entre des 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 |
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 |
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 |
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 |
Commentaires sur PowerShell
PowerShell est un projet open source. Sélectionnez un lien pour fournir des commentaires :