Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Configurar OpenSSL para la unión manual de la clave

Antes de importar una clave a Cloud KMS, debe unirse mediante el esquema PKCS#11 CKM_RSA_AES_KEY_WRAP, que incluye RSA-OAEP (que se incluye en OpenSSL 1.1 de forma predeterminada) y en unión de clave AES con relleno (que no es). Ese mecanismo no se incluye en OpenSSL.

Recomendamos usar la herramienta de línea de comandos de gcloud para une cada clave de forma automática durante la importación. Si debes unir tus claves de forma manual debido a requisitos de cumplimiento o normativos, primero debes volver a compilar OpenSSL para agregar compatibilidad con la unión de claves AES con relleno. Después de volver a compilar OpenSSL, puedes unir la clave de forma manual.

Antes de comenzar

Sigue los procedimientos de este tema para no reemplazar los archivos binarios OpenSSL incorporados del sistema por los archivos binarios con aplicación de parches producidos. Por ejemplo, no instales el OpenSSL con parches directamente en /usr. Si sigues este procedimiento con exactitud, el OpenSSL con parches se compilará en $HOME/build y se instalará en $HOME/local/bin.

Si ${HOME}/local/bin ya existe, crea una copia de seguridad de su contenido o mueve esos archivos en otro lugar antes de seguir los pasos de este tema.

Aplica parches e instala OpenSSL v1.1.0

Si decides usar OpenSSL para unir manualmente tus claves antes de importarlas a Cloud KMS, se requiere OpenSSL v1.1.0, con el siguiente parche aplicado. Deberás compilar OpenSSL y, luego, instalarlo en una ubicación separada de la instalación de OpenSSL predeterminada de tu sistema.

  1. Descarga el código fuente de la versión OpenSSL 1.1.0l desde https://www.openssl.org/source. Esta es la última versión en la línea de código 1.1.0. En este procedimiento, no uses una versión más reciente de OpenSSL, como v1.1.1. No se aplicará el parche.

  2. Extrae el archivo a ${HOME}/build/openssl/ con el siguiente comando. Este comando anula el directorio predeterminado, que incluye la versión de OpenSSL y suele cambiar. Reemplaza /path/to/downloaded-openssl.tar.gz por la ruta al archivo .tar.gz descargado.

    # Create the directory for the eventual OpenSSL binaries
    mkdir -p ${HOME}/local/ssl
    
    # Create the build directory
    mkdir -p ${HOME}/build/openssl
    
    # Extract the archive to ${HOME}/build/openssl
    tar xzvf /path/to/downloaded-openssl.tar.gz \
      -C ${HOME}/build/openssl/ \
      --strip-components 1
    
  3. Aplica un parche personalizado a la fuente de OpenSSL extraída con los siguientes comandos. El parche habilita la marca EVP_CIPHER_CTX_FLAG_WRAP_ALLOW.

    cd ${HOME}/build
    cat <<-EOF | patch -d . -p0
    --- orig/openssl/apps/enc.c 2020-01-17 14:39:54.991708785 -0500
    +++ openssl/apps/enc.c  2020-01-17 14:41:33.215704269 -0500
    @@ -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
    

  4. Ejecuta los siguientes comandos para compilar las bibliotecas y los objetos binarios de OpenSSL desde la fuente con parche, prueba la compilación para la validez y, luego, instala los objetos binarios y las bibliotecas en el directorio ${HOME}/local.

    CPUS=$(getconf _NPROCESSORS_ONLN)
    cd ${HOME}/build/openssl
    ./config --prefix=${HOME}/local --openssldir=${HOME}/local/ssl
    make -j${CPUS}
    make test
    make install
    

    No omita ni modifique las marcas --prefix o --openssldir, para asegurarse de no reemplazar la instalación de OpenSSL del sistema.

  5. Ejecuta el siguiente comando para verificar que el objeto binario de OpenSSL nuevo se haya instalado correctamente:

    test -x ${HOME}/local/bin/openssl || echo FAIL
    

    No verás resultados si los objetos binarios están instalados correctamente. Si ves FAIL, verifica el resultado de los comandos make, make test y make install que ejecutaste antes.

  6. Los objetos binarios de OpenSSL con parches se vinculan de forma dinámica con las bibliotecas de OpenSSL en ${HOME}/local/ssl/lib/, pero el comando ld no indexa estas bibliotecas de forma predeterminada. Ejecuta los siguientes comandos para crear una secuencia de comandos de unión que agregue las bibliotecas de parche a ${LD_LIBRARY_PATH} antes de invocar la CLI para OpenSSL con parches.

    cat > ${HOME}/local/bin/openssl.sh <<-EOF
    #!/bin/bash
    env LD_LIBRARY_PATH=${HOME}/local/lib/ ${HOME}/local/bin/openssl "\$@"
    EOF
    chmod u+x ${HOME}/local/bin/openssl.sh
    

  7. Verifica que la versión de OpenSSL que inicia la secuencia de comandos sea la versión que acabas de compilar y, luego, instala, con el siguiente comando:

    ${HOME}/local/bin/openssl.sh version
    

Ahora puedes invocar la secuencia de comandos de wrapper ${HOME}/local/bin/openssl.sh para vincular manualmente las claves para la importación.