Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
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.
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 Befehle make, make test und make 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 der ld-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.
Ü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:
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-09-02 (UTC)."],[],[],null,["# Configuring OpenSSL for manual key wrapping\n\nBefore you can import a key into Cloud KMS, it must be wrapped\nusing the\n[PKCS#11](https://docs.oasis-open.org/pkcs11/pkcs11-curr/v2.40/cos01/pkcs11-curr-v2.40-cos01.html#_Toc408226908)\n`CKM_RSA_AES_KEY_WRAP` scheme, which includes both `RSA-OAEP` (which is included\nin OpenSSL 1.1 by default) and AES Key Wrap\nwith Padding (which is not). That mechanism is not included in OpenSSL.\n\nWe recommend using the Google Cloud CLI to\n[wrap each key automatically](/kms/docs/importing-a-key#request_import) during\nthe import. If you must wrap your keys manually due to compliance or regulatory\nrequirements, you must first recompile OpenSSL to add support for AES Key Wrap\nwith Padding. After recompiling OpenSSL, you can\n[wrap the key manually](/kms/docs/wrapping-a-key).\n| **Important:** If you use automatic wrapping, do not follow these steps. Instead, you need to [install the Pyca cryptographic library](/kms/docs/crypto), which works with the OpenSSL binaries already installed on your local system. The Google Cloud CLI can use that library to automatically wrap your key during the import request.\n\nBefore you begin\n----------------\n\n| **Caution:** These steps require advanced knowledge of Linux. Most users should allow the Google Cloud CLI command to [automatically wrap and import](/kms/docs/importing-a-key#automatically_wrap_and_import) keys instead of following the instructions in this topic.\n\nDo not overwrite your system's built-in OpenSSL binaries with the\npatched binaries produced by following the procedures in this topic. For example,\ndo not install the patched OpenSSL directly into `/usr`. If you follow this\nprocedure exactly, the patched OpenSSL is built in `$HOME/build` and installed\ninto `$HOME/local/bin`.\n\nIf `${HOME}/local/bin` already exists, back up its contents or move those files\nelsewhere before following the steps in this topic.\n\nPatch and install OpenSSL v1.1.0\n--------------------------------\n\nIf you choose to use OpenSSL to manually wrap your keys before importing them\ninto Cloud KMS, OpenSSL v1.1.0 is required, with the following\npatch applied. You will need to compile OpenSSL and install it into a location\nseparate from your system's default OpenSSL installation.\n\n1. Download the source for OpenSSL 1.1.0l release from\n [https://www.openssl.org/source](https://www.openssl.org/source/old/1.1.0/openssl-1.1.0l.tar.gz).\n This is the latest release in the 1.1.0 code line. Do not use a newer\n version of OpenSSL, such as v1.1.1, in this procedure. The patch will fail\n to apply.\n\n2. Extract the archive to `${HOME}/build/openssl/` using the following command.\n This command overrides the default directory, which includes the version of\n OpenSSL and changes often. Replace\n \u003cvar translate=\"no\"\u003e/path/to/downloaded-openssl.tar.gz\u003c/var\u003e with the path to the downloaded\n `.tar.gz` archive.\n\n ```\n # Create the directory for the eventual OpenSSL binaries\n mkdir -p ${HOME}/local/ssl\n\n # Create the build directory\n mkdir -p ${HOME}/build/openssl\n\n # Extract the archive to ${HOME}/build/openssl\n tar xzvf /path/to/downloaded-openssl.tar.gz \\\n -C ${HOME}/build/openssl/ \\\n --strip-components 1\n ```\n3. Apply a custom patch to the extracted OpenSSL source, using the following\n commands.The patch enables the `EVP_CIPHER_CTX_FLAG_WRAP_ALLOW` flag.\n\n | **Warning:** This patch fails to apply to versions of OpenSSL other than v1.1.0l.\n\n\n ```none\n cd ${HOME}/build\n cat \u003c\u003c-EOF | patch -d . -p0\n --- orig/openssl/apps/enc.c 2020-01-17 14:39:54.991708785 -0500\n +++ openssl/apps/enc.c 2020-01-17 14:41:33.215704269 -0500\n @@ -482,6 +482,7 @@\n */\n\n BIO_get_cipher_ctx(benc, &ctx);\n + EVP_CIPHER_CTX_set_flags(ctx, EVP_CIPHER_CTX_FLAG_WRAP_ALLOW);\n\n if (!EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL, enc)) {\n BIO_printf(bio_err, \"Error setting cipher %s\\n\",\n EOF\n ```\n\n \u003cbr /\u003e\n\n4. Run the following commands to build the OpenSSL binaries and libraries from\n the patched source, test the build for validity, and install the binaries\n and libraries into the `${HOME}/local` directory.\n\n ```none\n CPUS=$(getconf _NPROCESSORS_ONLN)\n cd ${HOME}/build/openssl\n ./config --prefix=${HOME}/local --openssldir=${HOME}/local/ssl\n make -j${CPUS}\n make test\n make install\n ```\n\n Do not omit or modify the `--prefix` or `--openssldir` flags, to ensure that\n you do not overwrite the system's OpenSSL installation.\n5. Run the following command to check that the new OpenSSL binary installed\n successfully:\n\n ```none\n test -x ${HOME}/local/bin/openssl || echo FAIL\n ```\n\n You should see no output if the binaries are installed correctly. If you see\n `FAIL`, check the output of the `make`, `make test`, and `make install`\n commands you ran earlier.\n6. The patched OpenSSL binaries are dynamically linked against the OpenSSL\n libraries in `${HOME}/local/ssl/lib/`, but the `ld` command does not\n index these libraries by default. Run the following commands to create a\n wrapper script that adds the patched libraries to the `${LD_LIBRARY_PATH}`\n before invoking the CLI for the patched OpenSSL.\n\n\n ```\n cat \u003e ${HOME}/local/bin/openssl.sh \u003c\u003c-EOF\n #!/bin/bash\n env LD_LIBRARY_PATH=${HOME}/local/lib/ ${HOME}/local/bin/openssl \"\\$@\"\n EOF\n chmod u+x ${HOME}/local/bin/openssl.sh\n ```\n\n \u003cbr /\u003e\n\n7. Check that the version of OpenSSL that the script starts is the version you\n just built and installed, using the following command:\n\n ```\n ${HOME}/local/bin/openssl.sh version\n ```\n\nYou can now invoke the `${HOME}/local/bin/openssl.sh` wrapper script to\n[manually wrap keys for import](/kms/docs/wrapping-a-key)."]]