J'utilise OpenSSL pour importer ma clé dans AWS KMS, mais l'erreur « InvalidCiphertext » apparaît. Comment puis-je résoudre ce problème ?
J'ai créé une clé AWS KMS dans AWS Key Management Service (AWS KMS). J'ai spécifié l'origine des clés KMS comme étant externes, choisi RSAES_OAEP_SHA_256 comme algorithme pour la clé d'encapsulage, puis utilisé OpenSSL pour chiffrer ma clé avec la clé d'encapsulage. Toutefois, lorsque j'importe mes clés chiffrées, la demande échoue et je reçois un message d'erreur, « InvalidCiphertext ». Comment puis-je éviter cette erreur d'importation ?
Brève description
Par défaut, OpenSSL utilise la fonction de hachage SHA-1.
Pour éviter les erreurs d'importation lorsque vous utilisez l'algorithme RSAES_OAEP_SHA_256 (fonction de hachage SHA-256), chiffrez votre clé avec OpenSSL à l'aide de la commande openssl pkeyutl et spécifiez les paramètres –pkeyopt rsa_padding_mode:oaep et –pkeyopt rsa_oaep_md:sha256.
Voici la procédure complète permettant d'importer des éléments de clé dans AWS KMS à l'aide d'OpenSSL et de RSAES_OAEP_SHA_256 :
1. Créer une clé KMS en spécifiant « Externe » pour l'origine des éléments de clé.
2. Téléchargez la clé (publique) de wrapping et le jeton d'importation.
3. Générez une clé symétrique de 256 bits.
4. Vérifiez que votre version d'OpenSSL prend en charge openssl pkeyutl.
5. Chiffrez votre clé avec la clé de wrapping.
6. Importez votre clé chiffrée.
Remarque : si vous utilisez l'algorithme de chiffrement RSAES_OAEP_SHA_1 pour votre clé d'emballage, reportez-vous à Comment importer des éléments de clé.
Solution
Créer une clé KMS en spécifiant « Externe » pour l'origine des éléments de clé
Exécutez les commandes de l'AWS Command Line Interface (AWS CLI) suivantes pour créer une clé KMS pour les éléments de clé externes.
Remarque :
- Si vous recevez des erreurs lors de l'exécution des commandes AWS CLI, assurez-vous que vous utilisez la version la plus récente d'AWS CLI
- Assurez-vous de remplacer la RÉGION d'exportation et d'exporter les valeurs KEY_ALIAS avec les détails de votre clé.
export REGION=us-east-1 export KEY_ALIAS=kms_key_with_externalmaterial export KEY_ID=`aws kms create-key --region $REGION --origin EXTERNAL --description $KEY_ALIAS --query KeyMetadata.KeyId --output text` aws kms --region $REGION create-alias --alias-name alias/$KEY_ALIAS --target-key-id $KEY_ID
Le statut de la clé KMS que vous venez de créer reste En attente d'importation jusqu'à ce que vous importiez les éléments de la clé. Exécutez la commande suivante pour afficher le statut de la clé :
aws kms --region $REGION describe-key --key-id $KEY_ID
Télécharger la clé (publique) de wrapping et le jeton d'importation
Exécutez les commandes de l'interface de ligne de commande AWS suivantes pour obtenir les valeurs PublicKey (clé de wrapping) et ImportToken, décodez les deux valeurs à l'aide de base64, puis stockez-les dans des fichiers distincts. Notez que l'algorithme de wrapping RSAES_OAEP_SHA_256 est spécifié dans la commande get-parameters-for-import.
export KEY_PARAMETERS=`aws kms --region $REGION get-parameters-for-import --key-id $KEY_ID --wrapping-algorithm RSAES_OAEP_SHA_256 --wrapping-key-spec RSA_2048` echo $KEY_PARAMETERS | awk '{print $7}' | tr -d '",' | base64 --decode > PublicKey.bin echo $KEY_PARAMETERS | awk '{print $5}' | tr -d '",' | base64 --decode > ImportToken.bin
Ces commandes stockent la clé de wrapping dans PublicKey.bin et le jeton d'importation dans ImportToken.bin.
Générer une clé symétrique de 256 bits
La clé doit être une clé symétrique de 256 bits (32 octets). Exécutez l'une des commandes suivantes pour générer la clé :
OpenSSL
openssl rand -out PlaintextKeyMaterial.bin 32
-ou-
dd
dd if=/dev/urandom of=PlaintextKeyMaterial.bin bs=32 count=1
Vérifier que votre version OpenSSL prend bien en charge openssl pkeyutl
Pour chiffrer votre clé avec RSAES_OAEP_SHA_256 comme algorithme de wrapping, utilisez la commande openssl pkeyutl.
Important : cette commande est disponible uniquement sur OpenSSL 1.0.2 et les versions ultérieures.
Si vous utilisez un ordinateur Linux basé sur RHEL, comme une instance Amazon Elastic Compute Cloud (Amazon EC2) lancée avec une AMI Amazon Linux, procédez comme suit.
1. Exécutez la commande suivante pour vérifier votre version OpenSSL.
openssl version
2. Pour mettre à jour OpenSSL, exécutez la commande suivante.
sudo yum –y update openssl
Si vous utilisez macOS, procédez comme suit.
1. Exécutez les commandes Homebrew suivantes :
brew update brew upgrade openssl brew info openssl
2. La dernière commande indique que votre OpenSSL est installé dans /usr/local/opt/openssl/bin/. Vérifiez la version OpenSSL en exécutant la commande suivante.
/usr/local/opt/openssl/bin/openssl version
3. Pour toujours utiliser la version OpenSSL la plus récente, modifiez ~/.bash_profile et ajoutez la ligne suivante à la fin du fichier :
export PATH="/usr/local/opt/openssl/bin:$PATH"
4. Après avoir ajouté cette ligne, exécutez la commande suivante.
source ~/.bash_profile
5. Pour vérifier le changement dans votre environnement macOS, exécutez la commande suivante.
echo $PATH openssl version
Chiffrer votre clé avec la clé de wrapping
Exécutez la commande suivante pour chiffrer vos éléments de clé à l'aide de la version la plus récente d'OpenSSL et de la clé de wrapping que vous avez précédemment téléchargée.
Remarque : la clé de wrapping est stockée dans PublicKey.bin.
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
La commande génère EncryptedKeyMaterial.bin. Vous importez cette valeur en tant que clé chiffrée dans la clé KMS.
Importer votre clé chiffrée
Exécutez la commande AWS CLI suivante pour importer les éléments des clés chiffrées dans la clé KMS.
aws kms --region $REGION import-key-material --key-id $KEY_ID --encrypted-key-material fileb://EncryptedKeyMaterial.bin --import-token fileb://ImportToken.bin --expiration-model KEY_MATERIAL_DOES_NOT_EXPIRE
Après l'importation, le statut de la clé passe à Activée. Exécutez la commande suivante pour vérifier l'état de la clé.
aws kms --region $REGION describe-key --key-id $KEY_ID
Informations connexes
Vidéos associées

Contenus pertinents
- demandé il y a 4 moislg...
- demandé il y a un moislg...
- demandé il y a 5 jourslg...
- demandé il y a 2 moislg...
- demandé il y a 6 jourslg...
- AWS OFFICIELA mis à jour il y a 9 mois
- AWS OFFICIELA mis à jour il y a 5 mois
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a un an