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.
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.
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
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
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.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 comandosmake
,make test
ymake install
que ejecutaste antes.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 comandold
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
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.