Comment corriger OpenSSL pour activer l'utilisation avec le mécanisme CloudHSM CKM_RSA_AES_KEY_WRAP ?

Dernière mise à jour : 25/09/2020

Je souhaite 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. Vous pouvez télécharger et installer la dernière version d'OpenSSL, puis la corriger pour autoriser l'encapsulage d'enveloppe nécessaire pour le mécanisme CKM_RSA_AES_KEY_WRAP.

Solution

Suivez ces instructions pour créer une copie locale d'OpenSSL v1.1.0 à l'aide des commandes bash, sans supprimer ni modifier l'installation par défaut des clients d'OpenSSL.

Remarque : ces instructions utilisent les commandes RHEL avec le compte racine. Vous pouvez passer à la racine à l'aide de sudo su -, puis utiliser la version corrigée d'OpenSSL.

Correction d'OpenSSL pour autoriser CKM_RSA_AES_KEY_WRAP

1.    Suivez toutes les étapes en tant que racine pour vous assurer que vous disposez des autorisations appropriées pour les répertoires et les fichiers binaires à l'aide de cette commande :

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/build
mkdir -p $HOME/local/ssl
cd $HOME/build

4.    Notez la dernière version d'OpenSSL à partir de la page de téléchargement à l'adresse https://www.openssl.org/source/.

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 de l'étape 4.

curl -O https://www.openssl.org/source/openssl-1.1.1d.tar.gz
tar -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 périphérique.

Remarque : il peut être nécessaire de modifier le répertoire si vous utilisez une version différente d'OpenSSL-1.1.1d. Il peut être nécessaire de mettre à jour ces commandes pour les versions plus récentes d'OpenSSL ou ce correctif risque de ne pas fonctionner.

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-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 recevez une sortie confirmant la réussite de l'application des correctifs similaire à ce qui suit :

[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

9.    Vous avez installé avec succès la dernière version d'OpenSSL. 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. Définissez la variable d'environnement LD_LIBRARY_PATH pour vous assurer que les bibliothèques associées sont disponibles pour OpenSSL.

Conseil : étant donné que vous devez exécuter OpenSSL-1.1.1d plusieurs fois, créez le 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

11.    Pour démarrer OpenSSL-1.1.1, exécutez la commande suivante :

$HOME/local/bin/openssl.sh

Astuce : 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.

12.    Vous recevez une invite de commande. Pour vérifier la version OpenSSL, entrez version, puis choisissez Entrée sur votre appareil.

13.    Pour définir un alias, exécutez cette commande ou ajoutez-le à votre fichier .bash_profile :

alias OPENSSL_V111="$HOME/local/bin/openssl.sh"

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?