¿Cómo puedo aplicar parches a OpenSSL para permitir su uso con el mecanismo CKM_RSA_AES_KEY_WRAP de CloudHSM?
Quiero usar el mecanismo CKM_RSA_AES_KEY_WRAP de AWS CloudHSM con OpenSSL.
Breve descripción
El conjunto de cifrado -id-aes256-wrap-pad de OpenSSL compatible con el mecanismo PKCS #11 de CloudHSM RSA_AES_KEY_WRAP no está habilitado de forma predeterminada en la herramienta de línea de comandos de OpenSSL.
Descargue e instale la versión más reciente de OpenSSL. Luego, aplique el parche para permitir el empaquetado de sobre que se necesita para el mecanismo CKM_RSA_AES_KEY_WRAP.
Solución
Siga estos pasos para usar los comandos Bash y crear una copia local de OpenSSL v1.1.0.
Nota:
- Estos pasos no eliminan ni alteran la instalación predeterminada de OpenSSL del cliente.
- Estas instrucciones utilizan los comandos de RHEL con la cuenta de usuario raíz. Use el comando sudo su - para cambiar al usuario raíz. A continuación, utilice la versión parcheada de OpenSSL.
- Estas instrucciones se aplican únicamente a OpenSSL v1.1.x.
Parche OpenSSL para permitir CKM_RSA_AES_KEY_WRAP
-
Ejecute este comando para completar todos los pasos como usuario raíz y asegurarse de que tiene los permisos correctos para los directorios y los archivos binarios:
sudo su -
-
Ejecute este comando y, a continuación, anote la versión de OpenSSL:
openssl version
-
Descargue los últimos archivos binarios de OpenSSL en el directorio /root/build. Ejecute estos comandos para configurar los directorios:
mkdir $HOME/buildmkdir -p $HOME/local/ssl cd $HOME/build
-
Anote la última versión de descarga de OpenSSL del sitio web de OpenSSSL.
-
Descargue y descomprima los archivos binarios con estos comandos:
Nota: Sustituya openssl-1.1.1d.tar.gz por la versión más reciente de OpenSSL del paso 4.curl -O https://www.openssl.org/source/openssl-1.1.1d.tar.gztar -zxf openssl-1.1.1d.tar.gz
-
Instale el parche, cree herramientas de gcc para aplicar el parche y, a continuación, compile los binarios descargados:
yum install patch make gcc -y
-
Copie y pegue este bloque y, a continuación, seleccione entrar en su dispositivo.
Nota: Es posible que necesite cambiar el directorio si usa una versión diferente a la de OpenSSL-1.1.1d. Es posible que necesite actualizar estos comandos para las versiones más recientes de OpenSSL o que este parche no funcione.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
Recibirá un resultado que confirma que el parche se ha realizado correctamente, similar al siguiente:
[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
-
Ejecute este comando para compilar el archivo OpenSSL enc.c:
Nota: La compilación de cada comando puede tardar varios minutos.cd $HOME/build/openssl-1.1.1d/./config --prefix=$HOME/local --openssldir=$HOME/local/ssl make -j$(grep -c ^processor /proc/cpuinfo) make install
Ha instalado correctamente la última versión de OpenSSL. Esta versión de OpenSSL está vinculada de forma dinámica a las bibliotecas del directorio $HOME/local/SSL/lib/, y su shell no puede ejecutarla directamente.
-
Establezca la variable de entorno LD_LIBRARY_PATH para asegurarse de que las bibliotecas asociadas estén disponibles para OpenSSL.
Consejo: Como debe ejecutar OpenSSL-1.1.1d varias veces, antes de ejecutar el binario, cree un script denominado openssl.sh que cargue la ruta $HOME/local/SSL/lib/.cd $HOME/local/bin/ echo -e '#!/bin/bash \nenv LD_LIBRARY_PATH=$HOME/local/lib/ $HOME/local/bin/openssl "$@"' > ./openssl.sh
-
Utilice este comando para configurar el bit de ejecución en el script:
chmod 755 ./openssl.sh
- Para iniciar OpenSSL-1.1.1, ejecute este comando:
$HOME/local/bin/openssl.sh
Consejo: Puede usar el comando $HOME/local/bin/openssl.sh más adelante para ejecutar la versión parcheada de OpenSSL en una variable de entorno. Esto le permite hacer referencia a la versión parcheada de OpenSSL para ejecutar varios comandos. Recibirá un símbolo del sistema. Para verificar la versión de OpenSSL, introduzca la version y, a continuación, seleccione entrar en su dispositivo. Para salir del símbolo del sistema, escriba quit y, a continuación, seleccione entrar en el dispositivo. Para configurar un alias, ejecute este comando o agréguelo a su .bash_profile:
alias OPENSSL_V111="$HOME/local/bin/openssl.sh"
- Siga las instrucciones para transferir claves de forma segura a CloudHSM con OpenSSL.
Información relacionada
Contenido relevante
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 3 años