Bevor Sie einen Schlüssel in Cloud KMS importieren können, muss er mit dem CKM_RSA_AES_KEY_WRAP
-Schema PKCS#11 verpackt werden, das sowohl RSA-OAEP
(standardmäßig in OpenSSL 1.1 enthalten) als auch AES-Key-Wrap mit Padding (nicht enthalten) umfasst. Dieser Mechanismus ist in OpenSSL nicht enthalten.
Wir empfehlen, die Google Cloud CLI zu verwenden, um während des Imports jeden Schlüssel automatisch zu verpacken. Wenn Sie Ihre Schlüssel aufgrund von Compliance- oder behördlichen Anforderungen manuell verpacken müssen, müssen Sie OpenSSL erst neu kompilieren, um eine Unterstützung für AES Key Wrap mit Padding hinzuzufügen. Nach dem erneuten Kompilieren von OpenSSL können Sie den Schlüssel manuell verpacken.
Hinweise
Überschreiben Sie die integrierten OpenSSL-Binärdateien Ihres Systems nicht mit den gepatchten Binärdateien, die mithilfe der in diesem Thema beschriebenen Verfahren erstellt wurden. Installieren Sie beispielsweise die gepatchte OpenSSL nicht direkt in /usr
. Wenn Sie dieses Verfahren genau befolgen, ist die gepatchte OpenSSL in $HOME/build
integriert und wird in $HOME/local/bin
installiert.
Wenn ${HOME}/local/bin
bereits vorhanden ist, sichern Sie den Inhalt oder verschieben Sie diese Dateien an eine andere Stelle, bevor Sie die Schritte in diesem Thema ausführen.
OpenSSL v1.1.0 patchen und installieren
Wenn Sie OpenSSL verwenden, um Ihre Schlüssel manuell zu verpacken, bevor Sie sie in Cloud KMS importieren, ist OpenSSL v1.1.0 mit dem folgenden Patch erforderlich. Sie müssen OpenSSL kompilieren und an einem anderen Speicherort als der OpenSSL-Standardinstallation Ihres Systems installieren.
Laden Sie den Quellcode für OpenSSL 1.1.0l von https://www.openssl.org/source herunter. Dies ist die neueste Version der Codezeile 1.1.0. Verwenden Sie in diesem Verfahren keine neuere Version von OpenSSL, z. B. v1.1.1. Der Patch wird nicht angewendet.
Extrahieren Sie das Archiv mit dem folgenden Befehl in
${HOME}/build/openssl/
. Dieser Befehl überschreibt das Standardverzeichnis, das die Version von OpenSSL enthält und sich häufig ändert. Ersetzen Sie /path/to/downloaded-openssl.tar.gz durch den Pfad zum heruntergeladenen.tar.gz
-Archiv.# 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
Wenden Sie mit den folgenden Befehlen einen benutzerdefinierten Patch auf die extrahierte OpenSSL-Quelle an. Der Patch aktiviert das 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
Führen Sie die folgenden Befehle aus, um die OpenSSL-Binärdateien und -Bibliotheken aus der gepatchten Quelle zu erstellen, den Build auf Gültigkeit zu testen und die Binärdateien und Bibliotheken in das Verzeichnis
${HOME}/local
zu installieren.CPUS=$(getconf _NPROCESSORS_ONLN) cd ${HOME}/build/openssl ./config --prefix=${HOME}/local --openssldir=${HOME}/local/ssl make -j${CPUS} make test make install
Sie sollten die Flags
--prefix
oder--openssldir
nicht weglassen oder ändern, damit Sie die OpenSSL-Installation des Systems nicht überschreiben.Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die neue OpenSSL-Binärdatei erfolgreich installiert wurde:
test -x ${HOME}/local/bin/openssl || echo FAIL
Wenn die Binärdateien korrekt installiert sind, sollte keine Ausgabe angezeigt werden. Wenn
FAIL
angezeigt wird, überprüfen Sie die Ausgabe der Befehlemake
,make test
undmake install
, die Sie zuvor ausgeführt haben.Die gepatchten OpenSSL-Binärdateien werden dynamisch mit den OpenSSL-Bibliotheken in
${HOME}/local/ssl/lib/
verknüpft, aber derld
-Befehl indexiert diese Bibliotheken nicht standardmäßig. Führen Sie die folgenden Befehle aus, um ein Verpackungs-Skript zu erstellen, das die gepatchten Bibliotheken zu${LD_LIBRARY_PATH}
hinzufügt, bevor die CLI für das gepatchte OpenSSL aufgerufen wird.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
Überprüfen Sie, ob die Version von OpenSSL, die das Skript startet, die von Ihnen gerade erstellte und installierte Version ist. Verwenden Sie dazu den folgenden Befehl:
${HOME}/local/bin/openssl.sh version
Sie können jetzt das ${HOME}/local/bin/openssl.sh
-Verpackungs-Skript aufrufen, um Schlüssel für den Import manuell zu verpacken.