Je souhaite importer le matériel clé dans AWS Key Management Service (AWS KMS) afin de pouvoir utiliser des clés symétriques de 256 bits avec les services AWS.
Résolution
AWS KMS vous permet d’importer le matériel clé dans une clé AWS KMS. Vous pouvez ensuite utiliser cette clé avec les services AWS compatibles avec AWS KMS.
Pour importer le matériel clé dans AWS KMS, suivez les étapes ci-dessous.
Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la page Résolution d’erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez la version la plus récente de l’AWS CLI.
-
Créez une clé AWS KMS sans aucun matériel clé et notez-en l'ID.
Remarque : pour définir les autorisations administratives de la clé et définir les autorisations d’utilisation de la clé, il est recommandé de séparer l’administrateur de la clé et les rôles de la clé. Cela permet de limiter les risques liés à l’exposition de l’un des éléments d’information d’identification.
-
Ouvrez un terminal sur votre ordinateur local ou sur une instance Amazon Elastic Compute Cloud (Amazon EC2) avec OpenSSL installé.
-
Pour générer une clé symétrique de 256 bits, exécutez la commande suivante :
openssl rand -out PlaintextKeyMaterial.bin 32
-
Pour décrire la clé et obtenir les paramètres d’importation, exécutez les commandes de l’Interface de la ligne de commande AWS (AWS CLI) suivantes :
Remarque : les commandes stockent la clé publique et importent les paramètres de jeton dans une variable.
export KEY=`aws kms --region eu-west-2 get-parameters-for-import --key-id example1-2345-67ab-9123-456789abcdef --wrapping-algorithm RSAES_OAEP_SHA_256 --wrapping-key-spec RSA_2048 --query '{Key:PublicKey,Token:ImportToken}' --output text`
-
Pour placer la clé publique et importer le jeton dans des fichiers distincts encodés en base64, exécutez la commande suivante :
echo $KEY | awk '{print $1}' > PublicKey.b64echo $KEY | awk '{print $2}' > ImportToken.b64
-
Pour convertir le fichier encodé en base64 en fichiers binaires à importer, exécutez les commandes suivantes :
openssl enc -d -base64 -A -in PublicKey.b64 -out PublicKey.binopenssl enc -d -base64 -A -in ImportToken.b64 -out ImportToken.bin
-
Pour chiffrer le matériel clé à l’aide de la clé publique qui a été convertie en fichier binaire, exécutez la commande suivante :
openssl pkeyutl -in PlaintextKeyMaterial.bin -out EncryptedKeyMaterial.bin -inkey PublicKey.bin -keyform DER -pubin -encrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256
-
Pour importer le matériel clé chiffré dans AWS KMS, exécutez la commande suivante :
Remarque : cet exemple indique que le matériel clé n’expire pas, mais vous pouvez toute de même définir une date d’expiration. Pour plus d’informations, consultez ExpirationModel.
aws kms --region eu-west-2 import-key-material --key-id example1-2345-67ab-9123-456789abcdef --encrypted-key-material fileb://EncryptedKeyMaterial.bin --import-token fileb://ImportToken.bin --expiration-model KEY_MATERIAL_DOES_NOT_EXPIRE
-
Vérifiez que l’état de la clé importée est défini sur Activé. Pour ce faire, examinez la clé dans la console AWS KMS ou exécutez l’action d’API DescribeKey.
Si vous ne parvenez pas à importer la clé, procédez comme suit en fonction de votre cas d’utilisation :
- Vous avez attendu plus de 24 heures et le jeton d’importation a expiré. Pour résoudre ce problème, téléchargez la clé d’encapsulation et importez à nouveau le jeton pour rechiffrer le matériel clé.
- Le matériel clé ne correspond pas à celui d’une clé symétrique de 256 bits. Pour résoudre ce problème, vérifiez que la taille du fichier du matériel clé chiffré est de 32 octets. Pour vérifier la taille du fichier, exécutez l’une des commandes suivantes :
Linux
wc -c <filename>.bin
Windows
Pour plus d’informations, consultez la page Importation de matériel clé dans des clés AWS KMS.
dir <filename>.bin
Informations connexes
J’utilise OpenSSL pour importer une clé dans AWS KMS, mais je reçois le message d’erreur « InvalidCiphertext ». Comment puis-je résoudre ce problème ?