Wie kann ich OpenSSL patchen, um die Verwendung mit dem CloudHSM CKM_RSA_AES_KEY_WRAP-Mechanismus zu ermöglichen?

Lesedauer: 4 Minute
0

Ich möchte den AWS CloudHSM CKM_RSA_AES_KEY_WRAP-Mechanismus mit OpenSSL verwenden.

Kurzbeschreibung

Die OpenSSL-Verschlüsselung \ -id-aes256-wrap-pad, die mit dem CloudHSM PKCS #11 -Mechanismus RSA\ _AES\ _KEY\ _WRAP kompatibel ist, ist im OpenSSL-Befehlszeilentool standardmäßig nicht aktiviert.

Laden Sie die neueste Version von OpenSSL herunter und installieren Sie sie. Patchen Sie sie dann so, dass der Envelope-Wrap möglich ist, der für den CKM\ _RSA\ _AES\ _KEY\ _WRAP-Mechanismus benötigt wird.

Lösung

Folgen Sie diesen Schritten, um mithilfe von Bash-Befehlen eine lokale Kopie von OpenSSL v1.1.0 zu erstellen.

Anmerkung:

  • Durch diese Schritte wird die Standardinstallation von OpenSSL des Kunden nicht entfernt oder geändert.
  • Diese Anweisungen verwenden RHEL-Befehle mit dem Root-Benutzerkonto. Verwenden Sie den Befehl sudo su -, um zum Root-Benutzer zu wechseln. Verwenden Sie dann die gepatchte Version von OpenSSL.
  • Diese Anweisungen gelten nur für OpenSSL v1.1.x.

Patchen Sie OpenSSL, um CKM\ _RSA\ _AES\ _KEY\ _WRAP zuzulassen

  1. Führen Sie diesen Befehl aus, um alle Schritte als Root-Benutzer abzuschließen und sicherzustellen, dass Sie die richtigen Berechtigungen für Verzeichnisse und Binärdateien haben:

    sudo su -
  2. Führen Sie diesen Befehl aus und notieren Sie sich dann die OpenSSL-Version:

    openssl version
  3. Laden Sie die neuesten OpenSSL-Binärdateien im Verzeichnis ** /root/build** herunter. Führen Sie die folgenden Befehle aus, um die Verzeichnisse einzurichten:

    mkdir $HOME/buildmkdir -p $HOME/local/ssl
    cd $HOME/build
  4. Beachten Sie die neueste OpenSSL-Download-Version von der OpenSSL-Website.

  5. Laden Sie die Binärdateien mit diesen Befehlen herunter und entpacken Sie sie dann:
    Anmerkung: Ersetzen Sie openssl-1.1.1d.tar.gz durch die neueste OpenSSL-Version aus Schritt 4.

    curl -O https://www.openssl.org/source/openssl-1.1.1d.tar.gztar -zxf openssl-1.1.1d.tar.gz
  6. Installieren Sie den Patch, erstellen Sie die gcc-Tools zum Patchen und kompilieren Sie dann die heruntergeladenen Binärdateien:

    yum install patch make gcc -y
  7. Kopieren Sie diesen Block, fügen Sie ihn ein und wählen Sie dann die Eingabetaste auf Ihrem Gerät aus.
    Anmerkung: Möglicherweise müssen Sie das Verzeichnis ändern, wenn Sie eine andere Version als OpenSSL-1.1.1d verwenden. Möglicherweise müssen Sie diese Befehle für neuere Versionen von OpenSSL aktualisieren, oder dieser Patch funktioniert möglicherweise nicht.

    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

    Sie erhalten eine Ausgabe, die einen erfolgreichen Patch bestätigt, ähnlich der Folgenden:

    [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. Führen Sie diesen Befehl aus, um die OpenSSL enc.c-Datei zu kompilieren:
    Anmerkung: Es kann mehrere Minuten dauern, bis jeder Befehl kompiliert ist.

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

    Sie haben erfolgreich die neueste Version von OpenSSL installiert. Diese Version von OpenSSL ist dynamisch mit Bibliotheken im Verzeichnis $HOME/local/ssl/lib/ verknüpft, und Ihre Shell kann sie nicht direkt ausführen.

  9. Setzen Sie die Umgebungsvariable LD\ _LIBRARY\ _PATH, um sicherzustellen, dass die zugehörigen Bibliotheken für OpenSSL verfügbar sind.
    Tipp: Da Sie OpenSSL-1.1.1d mehrfach ausführen müssen, erstellen Sie vor der Ausführung der Binärdatei ein Skript namens openssl.sh, das den Pfad $HOME/local/ssl/lib/ lädt.

    cd $HOME/local/bin/
    echo -e '#!/bin/bash \nenv LD_LIBRARY_PATH=$HOME/local/lib/ $HOME/local/bin/openssl "$@"' > ./openssl.sh
  10. Verwenden Sie diesen Befehl, um das Ausführungsbit für das Skript festzulegen:

chmod 755 ./openssl.sh
  1. Um OpenSSL-1.1.1 zu starten, führen Sie diesen Befehl aus:
$HOME/local/bin/openssl.sh

Tipp: Sie können später den Befehl ** $HOME/local/bin/openssl.sh** verwenden, um die gepatchte Version von OpenSSL in einer Umgebungsvariablen auszuführen. Auf diese Weise können Sie auf die gepatchte Version von OpenSSL verweisen, um mehrere Befehle auszuführen. Sie erhalten eine Eingabeaufforderung. Um die OpenSSL-Version zu überprüfen, geben Sie Version ein und wählen Sie dann auf Ihrem Gerät die Eingabetaste aus. Um die Eingabeaufforderung zu verlassen, geben Sie Schliessen ein, und wählen Sie dann auf Ihrem Gerät die Eingabetaste aus. Um einen Alias einzurichten, führen Sie diesen Befehl aus oder fügen Sie ihn zu Ihrem .bash\ _profile hinzu:

alias OPENSSL_V111="$HOME/local/bin/openssl.sh"
  1. Folgen Sie den Anweisungen, um Schlüssel mit OpenSSL sicher an CloudHSM zu übertragen.

Weitere Informationen

Unterstützte Mechanismen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Monaten