Antes de importar una clave a Cloud KMS, debes unirla con el esquema PKCS#11
CKM_RSA_AES_KEY_WRAP
, que incluye RSA-OAEP
(que se incluye en OpenSSL 1.1 de forma predeterminada) y la unión de claves AES con relleno (que no se incluye). Ese mecanismo no está incluido en OpenSSL.
Te recomendamos usar Google Cloud CLI para unir cada clave de forma automática durante la importación. Si debes unir tus claves de forma manual debido a requisitos normativos o de cumplimiento, 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 a otro lugar antes de seguir los pasos de este tema.
Aplica parches e instala OpenSSL v1.1.0
Si eliges 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 independiente de la instalación predeterminada de OpenSSL en tu sistema.
Descarga la fuente para la versión 1.1.0l de OpenSSL desde https://www.openssl.org/source. Esta es la versión más reciente en la línea de código 1.1.0. No uses una versión más reciente de OpenSSL, como v1.1.1, en este procedimiento. La aplicación del parche fallará.
Extrae el archivo en
${HOME}/build/openssl/
con el siguiente comando. Este comando anula el directorio predeterminado, que incluye la versión de OpenSSL y cambia con frecuencia. Reemplaza /path/to/downloaded-openssl.tar.gz por la ruta de acceso 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 @@ -482,6 +482,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 los objetos binarios y las bibliotecas de OpenSSL desde la fuente con el parche, prueba la compilación de la compilación 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 de forma correcta:
test -x ${HOME}/local/bin/openssl || echo FAIL
No deberías ver ningún resultado si los objetos binarios están instalados de forma correcta. 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 a fin de crear una secuencia de comandos de wrapper que agregue las bibliotecas con parches a${LD_LIBRARY_PATH}
antes de invocar la CLI para el 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 que acabas de compilar e instalar 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.