Configuración de OpenSSL para encapsular material de claves

Aprenda a aplicar parches a OpenSSL para que pueda encapsular el material de claves mediante RSA_OAEP_AES_SHA256.

El cifrado de OpenSSL -id-aes256-wrap-pad compatible con RSA_AES_KEY_WRAP no está activado por defecto en la CLI de OCI. Parche OpenSSL para activar el ajuste del sobre necesario para el mecanismo CKM_RSA_AES_KEY_WRAP.

Nota

Para el escenario "Bring your own key (BYOK)" (Traiga su propia clave [BYOK]), debe aplicar un parche a OpenSSL para el ajuste RSA_OAEP_AES_SHA256.

Realice los siguientes pasos para descargar, compilar y ejecutar una nueva copia local de OpenSSL v1.1.1d mediante la CLI, sin alterar la instalación por defecto de OpenSSL en el sistema:

  1. Cree directorios para almacenar los binarios OpenSSL más recientes en /root/build.
    mkdir $HOME/build
    mkdir -p $HOME/local/ssl
    cd $HOME/build
  2. Ejecute el siguiente comando y observe la versión OpenSSL:
    openssl version
  3. Tenga en cuenta la última versión de OpenSSL en https://www.openssl.org/source/.
  4. Descargue y desempaquete las bibliotecas.
    Sustituya openssl-1.1.1d.tar.gz por la última versión del paso 3.
    curl -O https://www.openssl.org/source/openssl-1.1.1d.tar.gz
    tar -zxf openssl-1.1.1d.tar.gz
  5. Instale el parche, realice las herramientas gcc para aplicar parches y, a continuación, compile los binarios.
    sudo yum install patch make gcc -y
  6. Ejecute los comandos siguientes:
    Nota

    Puede que necesite actualizar estos comandos para las versiones más recientes de OpenSSL.
    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
    Confirme la aplicación correcta de parches si la respuesta es similar a la 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
  7. Compile el archivo enc.c.
    Nota

    La compilación puede tardar varios minutos en cada comando.
    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 está enlazada dinámicamente a bibliotecas del directorio $HOME/local/ssl/lib/ y no se puede ejecutar directamente. Defina la variable de entorno LD_LIBRARY_PATH para asegurarse de que las bibliotecas asociadas están disponibles para OpenSSL.
  8. Cree un script denominado openssl.sh que cargue la ruta de acceso $HOME/local/ssl/lib/ antes de ejecutar el binario. Esto facilita la ejecución de OpenSSL varias veces.
    cd $HOME/local/bin/
    
    echo -e '#!/bin/bash \nenv LD_LIBRARY_PATH=$HOME/local/lib/ $HOME/local/bin/openssl "$@"' > ./openssl.sh
  9. Defina el bit de ejecución en el script.
    chmod 755 ./openssl.sh
  10. Inicie OpenSSL con el siguiente comando:
    $HOME/local/bin/openssl.sh