Pour pouvoir importer une clé dans Cloud KMS, elle doit être encapsulée à l'aide du schéma PKCS#11
CKM_RSA_AES_KEY_WRAP
, qui inclut à la fois RSA-OAEP
(inclus dans OpenSSL 1.1 par défaut) et l'encapsulation de clé AES avec remplissage (non inclus). Ce mécanisme n'est pas inclus dans OpenSSL.
Nous vous recommandons d'utiliser la Google Cloud CLI pour encapsuler automatiquement chaque clé lors de l'importation. Si vous devez encapsuler vos clés manuellement en raison de contraintes réglementaires ou de conformité, vous devez d'abord recompiler OpenSSL pour la prise en charge de l'encapsulation de clé AES avec remplissage. Après avoir compilé OpenSSL, vous pouvez encapsuler la clé manuellement.
Avant de commencer
Ne remplacez pas les fichiers binaires OpenSSL intégrés à votre système par les versions corrigées des fichiers binaires générées en suivant les procédures décrites dans cette rubrique. Par exemple, n'installez pas le correctif OpenSSL directement dans /usr
. Si vous suivez rigoureusement cette procédure, la version corrigée OpenSSL est compilée dans $HOME/build
et installée dans $HOME/local/bin
.
Si ${HOME}/local/bin
existe déjà, sauvegardez son contenu ou déplacez ces fichiers ailleurs avant de suivre les étapes décrites dans cette rubrique.
Appliquer le correctif et installer OpenSSL v1.1.0.
Si vous choisissez d'utiliser OpenSSL pour encapsuler manuellement vos clés avant de les importer dans Cloud KMS, OpenSSL v1.1.0 est requis, avec le correctif suivant appliqué. Vous devez compiler OpenSSL et l'installer dans un emplacement distinct de l'installation OpenSSL par défaut de votre système.
Téléchargez la source de la version OpenSSL 1.1.0l depuis l'adresse https://www.openssl.org/source. Il s'agit de la dernière version de la ligne de code 1.1.0. N'utilisez pas une version plus récente d'OpenSSL, telle que la version 1.1.1, dans cette procédure, auquel cas le correctif échouera.
Extrayez l'archive vers
${HOME}/build/openssl/
à l'aide de la commande suivante. Cette commande ignore le répertoire par défaut, qui inclut la version d'OpenSSL et change régulièrement. Remplacez /path/to/downloaded-openssl.tar.gz par le chemin d'accès de l'archive.tar.gz
téléchargée.# 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
Appliquez un correctif personnalisé à la source OpenSSL extraite, en utilisant les commandes suivantes. Le correctif active l'indicateur
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
Exécutez les commandes suivantes pour créer les binaires et les bibliothèques OpenSSL à partir de la source corrigée, testez la validité de la compilation, et installez les binaires et les bibliothèques dans le répertoire
${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
N'omettez pas ou ne modifiez pas les indicateurs
--prefix
ou--openssldir
, pour vous assurer de ne pas écraser l'installation OpenSSL du système.Exécutez la commande suivante pour vérifier que le nouveau binaire OpenSSL a bien été installé :
test -x ${HOME}/local/bin/openssl || echo FAIL
Vous ne devriez voir aucun résultat si les fichiers binaires sont correctement installés. Si
FAIL
s'affiche, vérifiez le résultat des commandesmake
,make test
etmake install
que vous avez exécutées précédemment.Les binaires OpenSSL corrigés sont liés de manière dynamique aux bibliothèques OpenSSL dans
${HOME}/local/ssl/lib/
, mais la commandeld
ne les indexe pas par défaut. Exécutez les commandes suivantes pour créer un script wrapper qui ajoute les bibliothèques corrigées à${LD_LIBRARY_PATH}
avant d'appeler la CLI pour le correctif OpenSSL.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
Vérifiez que la version d'OpenSSL démarrée par le script correspond à la version que vous venez de créer et d'installer, à l'aide de la commande suivante :
${HOME}/local/bin/openssl.sh version
Vous pouvez maintenant appeler le script wrapper ${HOME}/local/bin/openssl.sh
pour encapsuler manuellement les clés à importer.