Come posso applicare una patch a OpenSSL per attivarne l'uso con il meccanismo CloudHSM CKM_RSA_AES_KEY_WRAP?

4 minuti di lettura
0

Desidero utilizzare il meccanismo AWS CloudHSM CKM_RSA_AES_KEY_WRAP con OpenSSL.

Breve descrizione

La crittografia OpenSSL -id-aes256-wrap-pad compatibile con il meccanismo CloudHSM PKCS #11 RSA_AES_KEY_WRAP non è abilitata in maniera predefinita nello strumento a riga di comando OpenSSL.

Scarica e installa l'ultima versione di OpenSSL. Quindi, applicaci una patch per consentire la crittografia a busta, necessaria per il meccanismo CKM_RSA_AES_KEY_WRAP.

Risoluzione

Segui questi passaggi per usare i comandi Bash per creare una copia locale di OpenSSL v1.1.0.

Nota:

  • questi passaggi non rimuovono né alterano l'installazione predefinita dei client di OpenSSL.
  • Queste istruzioni utilizzano i comandi RHEL con l'account utente root. Usa il comando sudo su - per passare all'utente root. Quindi, usa la versione con patch applicata di OpenSSL.
  • Queste istruzioni si applicano solo a OpenSSL v1.1.x.

Applica una patch a OpenSSL per consentire CKM_RSA_AES_KEY_WRAP

  1. Esegui questo comando per completare tutti i passaggi come utente root e assicurarti di disporre delle autorizzazioni corrette per le directory e i file binari:

    sudo su -
  2. Esegui questo comando e prendi nota della versione di OpenSSL:

    openssl version
  3. Scarica i file binari OpenSSL più recenti nella directory /root/build. Esegui questi comandi per configurare le directory:

    mkdir $HOME/buildmkdir -p $HOME/local/ssl
    cd $HOME/build
  4. Annota l'ultima versione scaricabile di OpenSSL dal sito web di OpenSSL.

  5. Scarica e decomprimi i file binari usando questi comandi:
    Nota: sostituisci openssl-1.1.1d.tar.gz con l'ultima versione di OpenSSL menzionata nel passaggio 4.

    curl -O https://www.openssl.org/source/openssl-1.1.1d.tar.gztar -zxf openssl-1.1.1d.tar.gz
  6. Installa la patch, crea gli strumenti gcc per applicare la patch e poi compila i file binari scaricati:

    yum install patch make gcc -y
  7. Copia e incolla questo blocco, quindi premi Invio sul tuo dispositivo.
    Nota: se si utilizza una versione diversa da OpenSSL-1.1.1d, potrebbe essere necessario modificare la directory. Per le versioni più recenti di OpenSSL potresti dover aggiornare questi comandi oppure la patch potrebbe non funzionare.

    cat <<-EOF | patch -d $HOME/build/ -p0diff -ur orig/openssl-1.1.1d/apps/enc.c openssl-1.1.1d/apps/enc.c
    --- orig/openssl-1.1.1d/apps/enc.c      
    +++ openssl-1.1.1d/apps/enc.c   
    @@ -533,6 +533,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

    Riceverai un output simile al seguente a conferma dell'avvenuta applicazione della patch :

    [root@ip-172-31-20-119 ~]# cat <<-EOF | patch -d $HOME/build/ -p0 diff -ur orig/openssl-1.1.1d/apps/enc.c openssl-1.1.1d/apps/enc.c
    --- orig/openssl-1.1.1d/apps/enc.c
    +++ openssl-l.1.1d/apps/enc.c
    @@ -533,6 +533,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
    
    patching file openssl-1.1.1d/apps/enc.c
  8. Esegui questo comando per compilare il file OpenSSL enc.c:
    Nota: la compilazione di ciascun comando potrebbe richiedere diversi minuti.

    cd $HOME/build/openssl-1.1.1d/./config --prefix=$HOME/local --openssldir=$HOME/local/ssl
    make -j$(grep -c ^processor /proc/cpuinfo)
    make install

    Hai installato con successo l'ultima versione di OpenSSL. Questa versione di OpenSSL è collegata dinamicamente alle librerie nella directory $HOME/local/ssl/lib/ e la shell non può eseguirla direttamente.

  9. Imposta la variabile di ambiente LD_LIBRARY_PATH per accertarti che le librerie associate siano disponibili per OpenSSL.
    Suggerimento: poiché devi eseguire più volte OpenSSL-1.1.1d, prima di eseguire il file binario, crea uno script chiamato openssl.sh che carichi il percorso $HOME/local/ssl/lib/.

    cd $HOME/local/bin/
    echo -e '#!/bin/bash \nenv LD_LIBRARY_PATH=$HOME/local/lib/ $HOME/local/bin/openssl "$@"' > ./openssl.sh
  10. Usa questo comando per impostare il bit di esecuzione sullo script:

chmod 755 ./openssl.sh
  1. Per avviare OpenSSL-1.1.1, esegui questo comando:
$HOME/local/bin/openssl.sh

Suggerimento: è possibile utilizzare il comando $HOME/local/bin/openssl.sh in un secondo momento per eseguire la versione con patch applicata di OpenSSL in una variabile di ambiente. Ciò ti consentirà di fare riferimento alla versione con patch applicata di OpenSSL per eseguire più comandi. Verrà visualizzato un prompt dei comandi. Per verificare la versione di OpenSSL, inserisci version, quindi premi Invio sul tuo dispositivo. Per uscire dal prompt dei comandi, inserisci quit, quindi premi Invio sul tuo dispositivo. Per impostare un alias, esegui questo comando o aggiungilo al tuo .bash_profile:

alias OPENSSL_V111="$HOME/local/bin/openssl.sh"
  1. Segui le istruzioni per trasferire in modo sicuro le chiavi su CloudHSM con OpenSSL.

Informazioni correlate

Supported mechanisms

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 mesi fa