Prima di poter importare una chiave in Cloud KMS, è necessario eseguirne il wrapping
utilizzando
PKCS#11
Schema CKM_RSA_AES_KEY_WRAP
, che include entrambi RSA-OAEP
(inclusi
in OpenSSL 1.1 per impostazione predefinita) e AES Key Wrap
con Spaziatura interna (che non lo è). Questo meccanismo non è incluso in OpenSSL.
Ti consigliamo di utilizzare Google Cloud CLI per aggreghi automaticamente ogni chiave durante l'importazione. Se devi eseguire il wrapping delle chiavi manualmente per motivi di conformità o normativi requisiti, devi prima ricompilare OpenSSL per aggiungere il supporto per l'incapsulamento delle chiavi AES con Padding. Dopo aver ricompilato OpenSSL, puoi eseguire il wrapping della chiave manualmente.
Prima di iniziare
Non sovrascrivere i file binari OpenSSL integrati del sistema con il
binari con patch prodotti seguendo le procedure in questo argomento. Ad esempio,
non installare OpenSSL con patch direttamente in /usr
. Se segui esattamente questa procedura, OpenSSL con patch viene compilato in $HOME/build
e installato 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 descritti in questo argomento.
Applica 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, è obbligatorio OpenSSL v1.1.0, con quanto segue patch applicata. Dovrai compilare OpenSSL e installarlo in una posizione distinta dall'installazione predefinita di OpenSSL del sistema.
Scarica il codice sorgente della release OpenSSL 1.1.0l da https://www.openssl.org/source. Questa è l'ultima release della riga del codice 1.1.0. Non utilizzare una versione più recente di OpenSSL, ad esempio la v1.1.1, in questa procedura. La patch avrà esito negativo per applicare le modifiche.
Estrai l'archivio in
${HOME}/build/openssl/
utilizzando il seguente comando. Questo comando esegue l'override della directory predefinita, che include la versione OpenSSL e cambiare spesso. Sostituisci /path/to/downloaded-openssl.tar.gz con il percorso del file scaricato Archivio.tar.gz
.# 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 al codice sorgente di OpenSSL estratto 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 questi comandi per creare programmi binari e librerie OpenSSL da il codice sorgente con patch, testa la build per verificarne la validità e installa i file 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 assicurarti che non sovrascrivi l'installazione OpenSSL del sistema.Esegui questo comando per verificare che il nuovo programma binario OpenSSL sia installato. correttamente:
test -x ${HOME}/local/bin/openssl || echo FAIL
Se i file binari sono installati correttamente, non dovrebbe essere visualizzato alcun output. Se vedi
FAIL
, controlla l'output dei comandimake
,make test
emake install
che hai eseguito in precedenza.I binari OpenSSL sottoposti a 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 riportati di seguito per creare uno script wrapper che aggiunga le librerie con patch al${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 la versione appena creato e installato, utilizzando il seguente comando:
${HOME}/local/bin/openssl.sh version
Ora puoi richiamare lo script wrapper ${HOME}/local/bin/openssl.sh
per
eseguire manualmente il wrapping delle chiavi per l'importazione.