Prima di poter importare una chiave in Cloud KMS, è necessario eseguirne il wrapping utilizzando lo schema PKCS#11
CKM_RSA_AES_KEY_WRAP
, che include sia RSA-OAEP
(che è incluso in OpenSSL 1.1 per impostazione predefinita) sia il wrapping di chiavi AES con Padding (che non lo è). Questo meccanismo non è incluso in OpenSSL.
Ti consigliamo di utilizzare Google Cloud CLI per eseguire il wrapping automatico di ogni chiave durante l'importazione. Se devi eseguire il wrapping delle chiavi manualmente in base a requisiti di conformità o normativi, devi prima ricompilare OpenSSL per aggiungere il supporto per il wrapping di chiavi AES con spaziatura interna. Dopo aver ricompilato OpenSSL, puoi eseguire il wrapping della chiave manualmente.
Prima di iniziare
Non sovrascrivere i programmi binari OpenSSL integrati del sistema con i programmi binari con patch prodotti seguendo le procedure descritte in questo argomento. Ad esempio,
non installare OpenSSL con patch direttamente in /usr
. Se segui esattamente questa procedura, OpenSSL con patch è integrato in $HOME/build
e installato in $HOME/local/bin
.
Se ${HOME}/local/bin
esiste già, esegui il backup dei contenuti o sposta i file altrove prima di seguire la procedura descritta in questo argomento.
Applica la patch e installa OpenSSL v1.1.0
Se scegli di utilizzare OpenSSL per eseguire manualmente il wrapping delle chiavi prima di importarle in Cloud KMS, è necessario OpenSSL v1.1.0, con la seguente patch applicata. Dovrai compilare OpenSSL e installarlo in un percorso separato dall'installazione OpenSSL predefinita del tuo sistema.
Scarica l'origine per la release OpenSSL 1.1.0l da https://www.openssl.org/source. Questa è l'ultima release nella riga di codice 1.1.0. Non utilizzare in questa procedura una versione più recente di OpenSSL, come v1.1.1. La patch non verrà applicata.
Estrai l'archivio in
${HOME}/build/openssl/
utilizzando il seguente comando. Questo comando esegue l'override della directory predefinita, che include la versione di OpenSSL e cambia spesso. Sostituisci /path/to/downloaded-openssl.tar.gz con il percorso dell'archivio.tar.gz
scaricato.# 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
Applica una patch personalizzata all'origine OpenSSL estratta, utilizzando i seguenti comandi.La patch attiva il flag
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
Esegui i comandi seguenti per creare i file binari e le librerie OpenSSL dall'origine a cui è stata applicata la patch, testare la validità della build e installare programmi binari e librerie nella directory
${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
Non omettere o modificare i flag
--prefix
o--openssldir
per evitare di sovrascrivere l'installazione OpenSSL del sistema.Esegui questo comando per verificare che il nuovo programma binario di OpenSSL sia stato installato correttamente:
test -x ${HOME}/local/bin/openssl || echo FAIL
Se i programmi binari sono installati correttamente, non dovresti vedere alcun output. Se vedi
FAIL
, controlla l'output dei comandimake
,make test
emake install
che hai eseguito in precedenza.I programmi binari di OpenSSL con patch sono collegati dinamicamente alle librerie OpenSSL in
${HOME}/local/ssl/lib/
, ma il comandold
non indicizza queste librerie per impostazione predefinita. Esegui i comandi seguenti per creare uno script wrapper che aggiunga le librerie con patch a${LD_LIBRARY_PATH}
prima di richiamare l'interfaccia a riga di comando per OpenSSL con patch.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 che la versione di OpenSSL avviata dallo script sia quella che hai appena creato e installato utilizzando il seguente comando:
${HOME}/local/bin/openssl.sh version
Ora puoi richiamare lo script del wrapper ${HOME}/local/bin/openssl.sh
per eseguire il wrapping manuale delle chiavi per l'importazione.