Comment appliquer des correctifs à OpenSSL pour qu’il puisse être utilisé avec le mécanisme CKM_RSA_AES_KEY_WRAP de CloudHSM ?

Lecture de 4 minute(s)
0

J’aimerais utiliser le mécanisme AWS CloudHSM CKM_RSA_AES_KEY_WRAP avec OpenSSL.

Brève description

Le chiffrement OpenSSL -id-aes256-wrap-pad compatible avec le mécanisme CloudHSM PKCS #11 RSA_AES_KEY_WRAP n’est pas activé par défaut dans l’outil de ligne de commande OpenSSL.

Commencez par télécharger et installer la dernière version d’OpenSSL. Appliquez ensuite des correctifs pour autoriser l’encapsulage d’enveloppe nécessaire au mécanisme CKM_RSA_AES_KEY_WRAP.

Résolution

Suivez ces instructions pour créer une copie locale d’OpenSSL v1.1.0 à l’aide de commandes Bash.

Remarque :

  • ces étapes ne suppriment ni ne modifient l’installation par défaut d’OpenSSL par le client.
  • ces instructions utilisent les commandes RHEL avec le compte de l’utilisateur racine. Vous pouvez exécuter la commande sudo su - pour passer à l’utilisateur racine. Utilisez ensuite la version corrigée d’OpenSSL.
  • Ces instructions s’appliquent uniquement à OpenSSL v1.1.x.

Application de correctifs à OpenSSL pour autoriser CKM_RSA_AES_KEY_WRAP

  1. Exécutez cette commande pour effectuer toutes les étapes en tant qu’utilisateur racine afin de disposer des autorisations appropriées pour les répertoires et les fichiers binaires :

    sudo su -
  2. Exécutez cette commande et notez la version OpenSSL :

    openssl version
  3. Téléchargez les derniers fichiers binaires OpenSSL dans le répertoire /root/build. Exécutez ces commandes pour configurer les répertoires :

    mkdir $HOME/buildmkdir -p $HOME/local/ssl
    cd $HOME/build
  4. Notez la dernière version d’OpenSSL à partir de la page de téléchargement.

  5. Téléchargez et décompressez les fichiers binaires à l’aide des commandes suivantes :
    Remarque : remplacez openssl-1.1.1d.tar.gz par la dernière version OpenSSL notée dans l’étape 4.

    curl -O https://www.openssl.org/source/openssl-1.1.1d.tar.gztar -zxf openssl-1.1.1d.tar.gz
  6. Installez le correctif, définissez les outils gcc à corriger, puis compilez les fichiers binaires téléchargés :

    yum install patch make gcc -y
  7. Copiez et collez ce bloc, puis validez avec la touche Entrée de votre appareil.
    Remarque : il peut être nécessaire de modifier le répertoire si vous utilisez une version autre qu’OpenSSL-1.1.1d. Vous devrez peut-être mettre à jour ces commandes pour les versions plus récentes d’OpenSSL. Dans le cas contraire, ce correctif risque de ne pas fonctionner.

    cat <<-EOF | patch -d $HOME/build/ -p0diff -ur orig/openssl-1.1.1d/apps/enc.c openssl-1.1.1d/apps/enc.c
    --- orig/openssl-1.1.1d/apps/enc.c      
    +++ openssl-1.1.1d/apps/enc.c   
    @@ -533,6 +533,7 @@
              */
    
             BIO_get_cipher_ctx(benc, &ctx);
    +        EVP_CIPHER_CTX_set_flags(ctx, EVP_CIPHER_CTX_FLAG_WRAP_ALLOW);
    
             if (!EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL, enc)) {
                 BIO_printf(bio_err, "Error setting cipher %s\n",
    EOF

    Vous recevrez une sortie de ce type, confirmant l’application des correctifs :

    [root@ip-172-31-20-119 ~]# cat <<-EOF | patch -d $HOME/build/ -p0 diff -ur orig/openssl-1.1.1d/apps/enc.c openssl-1.1.1d/apps/enc.c
    --- orig/openssl-1.1.1d/apps/enc.c
    +++ openssl-l.1.1d/apps/enc.c
    @@ -533,6 +533,7 @@
            */
    
        BIO_get_cipher_ctx (benc, &ctx) ;
    +        EVP_CIPHER_CTX_set_flags(ctx, EVP_CIPHER_CTX_FLAG_WRAP_ALLOW) ;
    
        if (!EVP_CipherInit_ex (ctx, cipher, NULL, NULL, NULL, enc) )  {
             BIO_printf (bio_err, "Error setting cipher %s\n" ,
    EOF
    
    patching file openssl-1.1.1d/apps/enc.c
  8. Exécutez cette commande pour compiler le fichier OpenSSL enc.c :
    Remarque : la compilation peut prendre plusieurs minutes pour chaque commande.

    cd $HOME/build/openssl-1.1.1d/./config --prefix=$HOME/local --openssldir=$HOME/local/ssl
    make -j$(grep -c ^processor /proc/cpuinfo)
    make install

    La dernière version d’OpenSSL est installée. Cette version d’OpenSSL est liée de manière dynamique aux bibliothèques dans le répertoire $HOME/local/ssl/lib/, et votre shell ne peut pas l’exécuter directement.

  9. Définissez la variable d’environnement LD_LIBRARY_PATH pour vous assurer que les bibliothèques associées sont disponibles pour OpenSSL.
    Conseil : comme OpenSSL-1.1.1d doit être exécuté plusieurs fois, vous devez créer un script openssl.sh qui charge le chemin $HOME/local/ssl/lib/ avant d’exécuter le fichier binaire.

    cd $HOME/local/bin/
    echo -e '#!/bin/bash \nenv LD_LIBRARY_PATH=$HOME/local/lib/ $HOME/local/bin/openssl "$@"' > ./openssl.sh
  10. Définissez le bit d’exécution sur le script à l’aide de cette commande :

chmod 755 ./openssl.sh
  1. Pour démarrer OpenSSL-1.1.1, exécutez cette commande :
$HOME/local/bin/openssl.sh

Conseil : vous pouvez utiliser la commande $HOME/local/bin/openssl.sh ultérieurement pour exécuter la version corrigée d’OpenSSL dans une variable d’environnement. Cela vous permet de référencer la version corrigée d’OpenSSL lorsque vous souhaitez exécuter plusieurs commandes. Vous recevez une invite de commande. Pour vérifier la version OpenSSL, entrez version, puis validez avec la touche Entrée de votre appareil. Pour quitter l’invite de commande, saisissez quit, puis validez avec la touche Entrée de votre appareil. Pour définir un alias, exécutez cette commande ou ajoutez-le à votre fichier .bash_profile :

alias OPENSSL_V111="$HOME/local/bin/openssl.sh"
  1. Veuillez suivre les instructions pour transférer en toute sécurité des clés vers CloudHSM avec OpenSSL.

Informations connexes

Mécanismes pris en charge

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 mois