GPG-Schlüssel generieren
Artefakte, die von der IBM Cloud DevSecOps Continuous Integration Toolchain erstellt und im Inventar erfasst werden, müssen signiert werden, bevor sie in der Produktion eingesetzt werden. Die kontinuierliche Integrationspipeline verwendet Skopeo als Standardwerkzeug für die Signierung von Artefakten.
Erstellen und speichern Sie einen GPG-Schlüssel, der von der DevSecOps-Pipeline für kontinuierliche Integration entweder automatisch oder manuell verwendet wird.
Automatisch einen GPG-Schlüssel erzeugen
Mit dieser Methode generiert die Vorlage den GPG-Schlüssel für Sie. Geben Sie den Namen und die E-Mail-Adresse für die Schlüsselgenerierung ein, indem Sie die folgenden Schritte ausführen:
-
Rufen Sie die Artefaktsignierung auf und klicken Sie auf New.
Artefaktsignierung -
Im Fenster werden die Felder name und email vorab mit dem Toolchain-Namen und der E-Mail-ID gefüllt. Ändern Sie den Namen und die E-Mail-ID so, dass sie Ihren GPG-Schlüsselanforderungen entsprechen. Sie können die Schlüssel auch in Ihrem geheimen Schlüssel-Provider speichern, indem Sie das Feld auswählen.
Name und E-Mail ändern -
Nachdem der Schlüssel generiert wurde, können Sie ihn zu Referenzzwecken kopieren.
Abbildung 3 Artifact-Signaturzertifikat
Der kopierte Schlüssel hat das Format base64. Entschlüsseln Sie den Schlüssel, bevor Sie ihn in Ihren Schlüsselanhänger einführen. echo <encoded_gpg_key> | base64 --decode
Manuelles Erzeugen eines GPG-Schlüssels
GPG-Befehlszeilentools herunterladen und installieren
Laden Sie die GPG-Kommandozeilentools für Ihr Betriebssystem herunter und installieren Sie sie. Gehen Sie zum Abschnitt GnuPG binary releases, um die Tools für Ihr Betriebssystem herunterzuladen.
Mac OS X
- Laden Sie Mac GPGherunter und installieren Sie es.
- Überprüfen Sie die installierte GPG-Version. Führen Sie in der Befehlszeile den folgenden Befehl aus:
$ gpg --version
gpg (GnuPG) 2.3.1
libgcrypt 1.9.3
Copyright (C) 2021 Free Software Foundation, Inc.
- Für GPG-Versionen vor 2.3.1 ist es möglicherweise nicht möglich, die Option --passphrase='' zu verwenden. In diesem Fall können Sie das Kennwort im folgenden Dialog übergehen, indem Sie die Eingabetaste drücken, wenn Sie dazu aufgefordert werden.
Windows™
- Herunterladen und installieren GitBash (erforderlich für
base64Verschlüsselung). - Überprüfen Sie die installierte GPG-Version. Führen Sie den folgenden Befehl in der Eingabeaufforderung Git bash aus:
$ gpg --version
gpg (GnuPG) 2.2.27
libgcrypt 1.8.7
Copyright (C) 2021 g10 Code GmbH
API-Schlüssel generieren
Lassen Sie die Kennphrase und das Feld leer, wenn der Befehl generate-key ein Dialogfenster öffnet, in dem Sie zur Eingabe einer Kennphrase aufgefordert werden. Dies ist eine Einschränkung des (skopeo) Dienstprogramms für die Bildsignierung, bei dem die Pipeline keinen privaten Schlüssel akzeptieren kann, der mit einer Passphrase geschützt ist. Wenn Sie die Passphrase während der Erstellung angeben, kann die Pipeline das Zertifikat nicht dekodieren, und die Pipeline scheitert beim Schritt der Bildsignierung. Beachten Sie, dass dies auch für das Signieren von GIT-Tags gilt.
Mac OS X und Linux™
Führen Sie in der Eingabeaufforderung Ihrer Shell den folgenden Befehl aus:
gpg --pinentry-mode loopback --passphrase='' --generate-key
- Geben Sie Ihren Namen und Ihre E-Mail-Adresse ein.
- Geben Sie O ein, um die Schlüsselerstellung zu starten.
- Nachdem der Schlüssel generiert wurde, wählen Sie die Option O.
Windows™
GPG-Version > 1.4
Führen Sie an der GitBash-Eingabeaufforderung den folgenden Befehl aus:
gpg --pinentry-mode loopback --passphrase='' --generate-key
- Geben Sie Ihren Namen in das Feld Real name ein.
- Geben Sie Ihre E-Mail-Adresse im Feld E-Mail-Adresse ein.
- Geben Sie O ein, um die Schlüsselerstellung zu starten.
- Nachdem der Schlüssel generiert wurde, wählen Sie die Option O.
GPG Version < 1.4 (oder ein Fehler beim vorherigen Befehl)
Führen Sie an der GitBash-Eingabeaufforderung den folgenden Befehl aus:
gpg --gen-key
- art des Schlüssels: Wählen Sie die Standardoption (1) RSA und RSA (Standard)
- schlüsselgröße: Standardwert beibehalten (2048)
- Schlüsselgültigkeit: Behalten Sie den Standardwert 0 bei. Dies liegt daran, dass der Wertschlüssel 0 nicht abläuft.
- Bestätigen Sie Ihre Wahl: Geben Sie y ein.
- Geben Sie Ihren Namen in das Feld Realer Name ein.
- Geben Sie Ihre E-Mail-Adresse im Feld E-Mail-Adresse ein.
- Geben Sie O ein, um die Schlüsselerstellung zu starten.
- Nachdem der Schlüssel generiert wurde, wählen Sie die Option O.
Schlüsselerstellung überprüfen
Überprüfen Sie, ob der GPG-Schlüssel erstellt wurde. Führen Sie in der Eingabeaufforderung den folgenden Befehl aus:
gpg --list-keys
Vergewissern Sie sich, dass Ihr Schlüssel aufgelistet ist. Beispielausgabe unter Windows:
$ gpg --list-keys
/c/Users/FredSmith/.gnupg/pubring.gpg
-------------------------------------
pub 2048R/1BB354B5 2021-06-08
uid Fred Smith <fred@company.com>
sub 2048R/F91C39A6 2021-06-08
Schlüssel exportieren
Dieser Schritt ist optional. Führen Sie diesen Befehl aus, um sicherzustellen, dass der GPG-Schlüssel exportiert werden kann.
gpg --export-secret-key <Email Address>
Der exportierte unformatierte Schlüssel darf nicht direkt kopiert werden. Es wird empfohlen, den in diesem Schritt erzeugten Schlüssel sicher in Ihrer Key Protect oder Secrets Manager Instanz zu speichern. Weitere Details finden Sie in den nächsten Abschnitten.
Schlüssel speichern
Der GPG-Schlüssel muss auf einem der folgenden Wege für die CI-Pipeline bereitgestellt werden:
- In IBM® Key Protect for IBM Cloud® gespeichert
- In IBM Cloud® Secrets Manager gespeichert
- Direkt in der CI-Toolchain gespeichert
Stellen Sie sicher, dass der Schlüssel im korrekten Format kopiert wird, um zu verhindern, dass aufgrund eines Importfehlers ein Signierungsfehler für die CI-Pipeline auftritt. Verwenden Sie pbcopy ( Mac OS X ) oder clip (Windows Git bash) im folgenden Befehl, um den Schlüsselinhalt in die Zwischenablage zu kopieren.
Schlüssel in Key Protect speichern
Exportieren Sie den GPG-Schlüssel und kopieren Sie ihn in die Zwischenablage.
Die doppelte base64 Verschlüsselung des GPG-Schlüssels ist erforderlich, bevor Sie ihn in Ihrer Key Protect Instanz speichern.
OS X
gpg --export-secret-key <Email Address> | base64 | base64 | pbcopy
Windows™
gpg --export-secret-key <Email Address> | base64 -w0 | base64 -w0 | clip
Linux™
gpg --export-secret-key <Email Address> | base64 | base64
-
Wählen Sie in der IBM Cloud-Konsole die Key Protect-Instanz aus, in der Sie den mit den obigen Schritten generierten GPG-Schlüssel speichern wollen.
-
Klicken Sie auf das Symbol Hinzufügen +, um der Instanz einen neuen Schlüssel hinzuzufügen.
-
Wählen Sie die Option Eigenen Schlüssel importieren.
-
Wählen Sie Wählen Sie einen Schlüsseltyp als Standardschlüssel.
-
Geben Sie den entsprechenden Namen in das Feld Schlüsselname ein. Der gespeicherte GPG-Schlüssel kann später über diesen Schlüsselnamen abgerufen werden.
-
Kopieren Sie den Schlüssel, wie er zuvor exportiert wurde, in das Feld Schlüsselmaterial.
Achten Sie darauf, dass beim Kopieren des Schlüssels und Einfügen in das Feld Schlüsselmaterial keine zusätzliche Zeile am Ende des Schlüssels steht.
-
Wählen Sie die Option Schlüsselanhänger auswählen als Standard.
-
Klicken Sie auf Schlüssel hinzufügen, um den Schlüssel zu Ihrem Key Protect hinzuzufügen.
Den Schlüssel zum Schlüsselschutz hinzufügen
Weitere Informationen zu Key Protect finden Sie in der Key Protect-Dokumentation.
Schlüssel in Secrets Manager speichern
Die einfache base64-Codierung des GPG-Schlüssels ist erforderlich, bevor er in Ihrer Secrets Manager-Instanz gespeichert wird.
Exportieren Sie den GPG-Schlüssel und kopieren Sie ihn in die Zwischenablage.
OS X
gpg --export-secret-key <Email Address> | base64 | pbcopy
Windows™
gpg --export-secret-key <Email Address> | base64 -w0 | clip
Linux™
gpg --export-secret-key <Email Address> | base64
-
Wählen Sie in der IBM Cloud-Konsole die Secrets Manager-Instanz aus, in der Sie den mit den obigen Schritten generierten GPG-Schlüssel speichern wollen.
-
Klicken Sie auf das Symbol Hinzufügen +, um der Instanz einen neuen Schlüssel hinzuzufügen.
-
Wählen Sie die Option Anderer Geheimnistyp.
Andere geheime Art -
Wählen Sie Standardschlüssel für die Option Schlüsseltyp auswählen aus.
-
Geben Sie einen passenden Namen in das Feld Name ein. Der gespeicherte GPG-Schlüssel kann später durch diesen Namen abgerufen werden.
-
Wählen Sie die Option als Geheimwert und fügen Sie den zuvor exportierten Schlüssel in das Feld Geheimwert ein.
Vergewissern Sie sich, dass beim Kopieren des Schlüssels und Einfügen in das Feld für den geheimen Wert keine zusätzliche Zeile am Ende des Schlüssels vorhanden ist.
-
Fügen Sie den Schlüssel zu Ihrer Key Protect-Instanz hinzu, indem Sie auf das Symbol Hinzufügen klicken.
Hinzufügen des Schlüssels
Weitere Informationen zu Secrets Manager enthält der Abschnitt Einführung in Secrets Manager.
Privaten Schlüssel exportieren und direkt in der CI-Pipeline speichern
Dieser Ansatz wird nicht empfohlen und sollte nur zu Versuchszwecken verwendet werden. Verwenden Sie Key Protect oder Secrets Manager für die Speicherung der Schlüssel. Weitere Informationen finden Sie unter Speicher für geheime Schlüssel konfigurieren.
Die einfache base64-Codierung des GPG-Schlüssels ist erforderlich, bevor er als geschützte Pipeline-Eigenschaft gespeichert wird.
Speichern Sie den GPG-Schlüssel sicher in einer Key Protect- oder Secrets Manager-Instanz.
Mac OS X / Linux™
gpg --export-secret-key <Email Address> | base64
Windows™
gpg --export-secret-key <Email Address> | base64 -w0