Prima di poter importare una chiave in Cloud KMS, devi eseguire il wrapping utilizzando lo schema PKCS#11 CKM_RSA_AES_KEY_WRAP
, che include sia RSA-OAEP
(includeto in OpenSSL 1.1 per impostazione predefinita) sia AES Key Wrap con Padding (che non lo è). Questo meccanismo non è incluso in OpenSSL.
Consigliamo di utilizzare l'interfaccia a Google Cloud CLI per aggregare automaticamente ogni chiave durante l'importazione. Se devi eseguire il wrapping delle chiavi manualmente a causa di requisiti di conformità o normativi, devi prima ricompilare OpenSSL per aggiungere il supporto per l'avvolgimento con chiave AES con imbottitura. Dopo aver ricompilato OpenSSL, puoi aggregare la chiave manualmente.
Prima di iniziare
Non sovrascrivere i programmi binari OpenSSL integrati nel sistema con i programmi binari sottoposti a patch prodotti seguendo le procedure descritte in questo argomento. Ad esempio, non installare la patch OpenSSL direttamente in /usr
. Se segui esattamente questa procedura, la patch OpenSSL con patch è integrata in $HOME/build
e installata in $HOME/local/bin
.
Se ${HOME}/local/bin
esiste già, esegui il backup dei relativi contenuti o sposta i file
altrove prima di seguire i passaggi riportati in questo argomento.
Patch e installazione di OpenSSL v1.1.0
Se scegli di utilizzare OpenSSL per eseguire manualmente il wrapping delle chiavi prima di importarle in Cloud KMS, è richiesto OpenSSL v1.1.0 con la seguente applicazione applicata. Dovrai compilare OpenSSL e installarlo in una posizione separata dall'installazione OpenSSL predefinita del tuo sistema.
Scarica la fonte per la release OpenSSL 1.1.0l da https://www.openssl.org/source. Questa è l'ultima release della riga di codice 1.1.0. Non utilizzare una versione più recente di OpenSSL, ad esempio v1.1.1, in questa procedura. Non si applicherà la patch.
Estrai l'archivio a
${HOME}/build/openssl/
utilizzando il comando seguente. Questo comando sostituisce la directory predefinita, che include la versione di OpenSSL e viene modificata 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 abilita 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 programmi binari e le librerie OpenSSL dall'origine con patch, verifica la validità della build e installa i programmi binari e le 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 assicurarti di non sovrascrivere l'installazione OpenSSL del sistema.Esegui questo comando per verificare che il nuovo programma binario 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 wrapping che aggiunge 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 appena creata e installata utilizzando il seguente comando:
${HOME}/local/bin/openssl.sh version
Ora puoi richiamare lo script wrapper ${HOME}/local/bin/openssl.sh
per
aggregare manualmente le chiavi per l'importazione.