Prima di poter importare una chiave in Cloud KMS, deve essere sottoposta a wrapping utilizzando lo schema CKM_RSA_AES_KEY_WRAP
PKCS#11, che include sia RSA-OAEP
(incluso per impostazione predefinita in OpenSSL 1.1) sia il wrapping della chiave AES con padding (non incluso). Questo meccanismo non è incluso in OpenSSL.
Ti consigliamo di utilizzare Google Cloud CLI per chiudere 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 il wrapping delle chiavi AES con padding. Dopo aver ricompilato OpenSSL, puoi eseguire il wrapping della chiave manualmente.
Prima di iniziare
Non sovrascrivere i binari OpenSSL integrati del sistema con i 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 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.
Esegui la patch e installa OpenSSL 1.1.0
Se scegli di utilizzare OpenSSL per eseguire il wrapping manuale delle chiavi prima di importarle in Cloud KMS, è necessaria la versione OpenSSL 1.1.0 con la patch riportata di seguito 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 è la release più recente della linea di codice 1.1.0. Non utilizzare una versione più recente di OpenSSL, ad esempio la v1.1.1, in questa procedura. L'applicazione della patch non andrà a buon fine.
Estrai l'archivio in
${HOME}/build/openssl/
utilizzando il seguente comando. Questo comando sostituisce la 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 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 i seguenti comandi per compilare i binari e le librerie OpenSSL dal codice sorgente corretto, verifica la validità della compilazione e installa i 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 di OpenSSL del sistema.Esegui il seguente comando per verificare che il nuovo file binario OpenSSL sia stato installato correttamente:
test -x ${HOME}/local/bin/openssl || echo FAIL
Non dovresti vedere alcun output se i file binari sono installati correttamente. 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 quella che hai appena compilato e installato utilizzando il seguente comando:
${HOME}/local/bin/openssl.sh version
Ora puoi richiamare lo script wrapper ${HOME}/local/bin/openssl.sh
per mandare a capo manualmente le chiavi per l'importazione.