Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Comment utiliser OpenSSL et l’outil de ligne de commande CloudHSM pour transférer en toute sécurité mes clés vers CloudHSM ?
Je souhaite utiliser l’outil de ligne de commande CloudHSM (CloudHSM CLI) pour exécuter la sous-commande « key unwrap » pour importer des clés locales dans AWS CloudHSM.
Brève description
Commencez par chiffrer votre clé de données utiles à l'aide d'une clé éphémère Advanced Encryption Standard (AES). Puis, chiffrez la clé AES éphémère avec votre clé publique issue d’une paire de clés. Enfin, joignez la clé de données utiles chiffrée et la clé éphémère chiffrée dans un fichier unique. Le fichier est envoyé à votre CloudHSM dans un format chiffré et la clé privée déchiffre le fichier à partir de la paire de clés. Le mécanisme AES_KEY_WRAP déchiffre la clé AES éphémère et utilise cette clé pour déchiffrer votre clé de données utiles.
Remarque : Effectuez les étapes suivantes sur une instance Amazon Elastic Compute Cloud (Amazon EC2) qui exécute Linux. Il est recommandé d'utiliser une Amazon Machine Image (AMI) Amazon Linux 2023 qui inclut la version et les utilitaires d'OpenSSL requis.
Créez les clés suivantes :
- Clé AES, RSA ou EC de données utiles que vous importez et utilisez avec votre CloudHSM.
- Clé AES temporaire requise par AES_KEY_WRAP pour chiffrer les données utiles. Il est recommandé d’utiliser AES car il n’existe aucune limite de taille à ce que vous pouvez chiffrer.
- Paire de clés RSA utilisée pour encapsuler et décapsuler les clés en toute sécurité dans votre CloudHSM.
Pour utiliser l’encapsulation d’enveloppe, vous devez disposer d’OpenSSL version 3.x.
Pour déterminer votre version d'OpenSSL, exécutez la commande suivante :
openssl version
Exemple de sortie :
OpenSSL 3.0.8 7 Feb 2023 (Library: OpenSSL 3.0.8 7 Feb 2023)
Résolution
Remarque : Dans les commandes précédentes, remplacez les valeurs suivantes par les vôtres :
- YOUR_CRYPTO_USER_NAME par votre nom d’utilisateur cryptographique
- YOUR_CRYPTO_USER_PASSWORD par votre mot de passe
- YOUR_WRAPPING_KEY_LABEL par le libellé de clé que vous avez attribué pour encapsuler votre clé publique RSA
- YOUR_UNWRAPPING_KEY_LABEL par le libellé de clé que vous avez attribué pour décapsuler votre clé privée RSA
- YOUR_IMPORTED_KEY_LABEL par le libellé de clé que vous avez attribué à la clé de données utiles importée
Vos libellés de clés d'encapsulation et de décapsulation doivent être uniques, car les libellés de clés constituent une condition de filtrage pour les commandes key generate-file et key unwrap. Vous pouvez également utiliser une autre condition de filtre pour identifier les clés de manière unique. Pour plus d'informations sur les filtres de clés, consultez la section Filtrer les clés à l'aide de la CLI CloudHSM.
Définir les informations d'identification de l’utilisateur cryptographique pour la CLI CloudHSM
Exécutez les commandes suivantes :
export CLOUDHSM_ROLE="crypto-user" export CLOUDHSM_PIN="YOUR_CRYPTO_USER_NAME:YOUR_CRYPTO_USER_PASSWORD"
Importer les données utiles AES
Pour créer, chiffrer et importer les clés locales, procédez comme suit :
-
Pour créer les clés AES de données utiles, AES éphémères et RSA, exécutez les commandes suivantes :
openssl rand -out payload_aes 32 openssl rand -out ephemeral_aes 32 /opt/cloudhsm/bin/cloudhsm-cli key generate-asymmetric-pair rsa --public-label YOUR_WRAPPING_KEY_LABEL --private-label YOUR_UNWRAPPING_KEY_LABEL --modulus-size-bits 4096 --public-exponent 65537 --private-attributes unwrap=true /opt/cloudhsm/bin/cloudhsm-cli key generate-file --encoding pem --path public.pem --filter attr.label=YOUR_WRAPPING_KEY_LABELRemarque : Pour suivre vos fichiers, créez les clés dans leur propre répertoire.
-
Pour mettre les valeurs hexadécimales brutes de la clé AES éphémère dans une variable, exécutez la commande suivante :
EPHEMERAL_AES_HEX=$(hexdump -v -e '/1 "%02X"' < ephemeral_aes)Remarque : Assurez-vous d'avoir installé l'utilitaire hexdump. Si vous n’installez pas hexdump, la commande précédente renvoie une erreur. Consultez la documentation de votre système d’exploitation (OS) pour savoir comment installer l’utilitaire hexdump.
-
Pour encapsuler les données utiles avec la clé AES éphémère, exécutez la commande enc OpenSSL :
openssl enc -id-aes256-wrap-pad -K $EPHEMERAL_AES_HEX -iv A65959A6 -in payload_aes -out payload_wrappedRemarque : Le chiffrement -id-aes256-wrap-pad est le mécanisme d’encapsulation conforme à l’extension RFC 3394 qui coexiste avec CKM_RSA_AES_KEY_WRAP. L'extension RFC 3394, RFC 5649, définit les valeurs -iv. Pour plus d'informations, consultez les pages Encapsulation de clé AES avec un algorithme de remplissage et Encapsulation de clé AES avec un algorithme d’encapsulation sur le site Web d'IETF.
-
Utilisez la clé publique de la paire de clés RSA pour chiffrer la clé AES :
openssl pkeyutl -encrypt -in ephemeral_aes -out ephemeral_wrapped -pubin -inkey public.pem -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha1 -pkeyopt rsa_mgf1_md:sha1 -
À partir de votre machine locale, joignez la clé de données utiles chiffrée et la clé AES éphémère dans un seul fichier nommé rsa_aes_wrapped :
cat ephemeral_wrapped payload_wrapped > rsa_aes_wrapped -
Pour utiliser la clé privée RSA avec key unwrap rsa-aes afin de décapsuler la clé de données utiles jointe dans CloudHSM, exécutez la commande suivante :
/opt/cloudhsm/bin/cloudhsm-cli key unwrap rsa-aes --data-path rsa_aes_wrapped --key-type-class aes --label YOUR_IMPORTED_KEY_LABEL --hash-function sha1 --mgf mgf1-sha1 --filter attr.label=YOUR_UNWRAPPING_KEY_LABEL --attributes decrypt=true encrypt=trueRemarque : Vous devez utiliser --key-type-class aes pour décapsuler les clés AES. En fonction de l'utilisation des clés, utilisez --attributes pour attribuer des attributs de clés. Pour plus d'informations sur les options et les attributs de clés, consultez la section Attributs de clés pour la CLI CloudHSM et les exemples d'utilisation de la commande key unwrap rsa-aes.
Vous recevez un message d’importation de la clé AES de données utiles similaire à la sortie suivante :
{ "error_code": 0, "data": { "key": { "key-reference": "0x000000000068031a", "key-info": { "key-owners": [ { "username": "YOUR_CRYPTO_USER_NAME", "key-coverage": "full" } ], "shared-users": [], "cluster-coverage": "full" }, "attributes": { "key-type": "aes", "label": "YOUR_IMPORTED_KEY_LABEL", "id": "0x", "check-value": "0xb31c2a", "class": "secret-key", "encrypt": true, "decrypt": true, "token": true, "always-sensitive": false, "derive": false, "destroyable": true, "extractable": true, "local": false, "modifiable": true, "never-extractable": false, "private": true, "sensitive": true, "sign": true, "trusted": false, "unwrap": false, "verify": true, "wrap": false, "wrap-with-trusted": false, "key-length-bytes": 32 } } } }
Importer les données utiles RSA
Procédez comme suit :
-
Pour décapsuler une clé privée RSA dans CloudHSM, exécutez les commandes suivantes pour remplacer la clé de données utiles par une clé privée RSA :
openssl genrsa -out payload_rsa.pem 2048 openssl rand -out ephemeral_aes 32 -
Utilisez un éditeur de texte brut pour vérifier le format des clés RSA :
PKCS1 format: -----BEGIN RSA PRIVATE KEY----- - PKCS8 format: -----BEGIN PRIVATE KEY-----Remarque : Les clés RSA sont au format PKCS #1. Cependant, la CLI CloudHSM suppose que la clé privée soit au format PKCS #8 DER.
-
Pour convertir la clé payload_rsa.pem au format PKCS #8 et encodée DER, exécutez la commande suivante :
openssl pkcs8 -topk8 -inform PEM -outform DER -in payload_rsa.pem -out payload_rsa_pkcs8.der -nocrypt -
Effectuez les étapes 2 à 5 de la section Importer les données utiles AES. Remplacez payload_aes par payload_rsa_pkcs8.der.
-
Pour décapsuler la clé privée RSA de données utiles dans CloudHSM, exécutez la commande suivante :
/opt/cloudhsm/bin/cloudhsm-cli key unwrap rsa-aes --data-path rsa_aes_wrapped --key-type-class rsa-private --label YOUR_IMPORTED_KEY_LABEL --hash-function sha1 --mgf mgf1-sha1 --filter attr.label=YOUR_UNWRAPPING_KEY_LABEL --attributes decrypt=true sign=trueRemarque : Vous devez utiliser --key-type-class rsa-private pour décapsuler les clés RSA. En fonction de l'utilisation des clés, utilisez --attributes pour attribuer des attributs de clés.
Importer les données utiles EC
Pour importer les données utiles, procédez comme suit :
-
Pour décapsuler une clé privée RSA dans CloudHSM, exécutez les commandes suivantes pour remplacer la clé de données utiles par une clé privée RSA :
openssl ecparam -name secp256k1 -genkey -noout -out payload_ec.pemopenssl rand -out ephemeral_aes 32 -
Utilisez un éditeur de texte brut pour vérifier le format des clés EC :
PKCS1 format: -----BEGIN EC PRIVATE KEY----- - PKCS8 format: -----BEGIN PRIVATE KEY-----Remarque : Les clés EC sont au format PKCS #1. Cependant, la CLI CloudHSM suppose que la clé privée soit au format PKCS #8 DER.
-
Pour convertir la clé payload_ec.pem au format PKCS #8 et encodée DER, exécutez la commande suivante :
openssl pkcs8 -topk8 -inform PEM -outform DER -in payload_ec.pem -out payload_ec_pkcs8.der -nocrypt -
Effectuez les étapes 2 à 5 de la section Importer les données utiles AES. Remplacez payload_aes par payload_ec_pkcs8.der.
-
Pour décapsuler la clé privée EC des données utiles dans CloudHSM, exécutez la commande suivante :
/opt/cloudhsm/bin/cloudhsm-cli key unwrap rsa-aes --data-path rsa_aes_wrapped --key-type-class ec-private --label YOUR_IMPORTED_KEY_LABEL --hash-function sha1 --mgf mgf1-sha1 --filter attr.label=YOUR_UNWRAPPING_KEY_LABEL --attributes decrypt=true sign=trueRemarque : Vous devez utiliser --key-type-class ec-private pour décapsuler les clés EC. En fonction de l'utilisation des clés, utilisez --attributes pour attribuer des attributs de clés.
Informations connexes
Mécanismes pris en charge pour la bibliothèque PKCS #11 pour AWS CloudHSM Client SDK 5
- Balises
- AWS CloudHSM
- Langue
- Français

Contenus pertinents
- demandé il y a 2 ans
- demandé il y a un an
- demandé il y a un an
- demandé il y a 3 ans
AWS OFFICIELA mis à jour il y a 2 ans
AWS OFFICIELA mis à jour il y a 4 ans