Configurazione di OpenSSL per il blocco manuale delle chiavi

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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.

  1. 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.

  2. 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
    
  3. 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
    

  4. 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.

  5. 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 comandi make, make test e make install che hai eseguito in precedenza.

  6. I programmi binari di OpenSSL con patch sono collegati dinamicamente alle librerie OpenSSL in ${HOME}/local/ssl/lib/, ma il comando ld 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
    

  7. 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.