GitLab unterstützt seit einer Weile signierte Commits mit GNU Privacy Guard (GPG). In diesem Artikel beschreibe ich die Schritte zum Einrichten eines GPG-Schlüssels und, wie ich diesen zum Signieren meiner Commits verwende.
Update Sept. 2020: Kapitel zum Hinterlegen des GPG-Schlüssels im GitHub-Konto hinzugefügt.
GPG-Schlüssel konfigurieren
Neuen GPG-Schlüssel erstellen
Falls kein passender GPG-Schlüssel vorhanden ist kann mit gpg einfach ein neues Schlüsselpaar erstellt werden:
gpg --full-gen-keyBeim Erstellen des Schlüssels ist es wichtig, dieselbe E-Mail-Adresse anzugeben, die auch beim GitLab-Konto hinterlegt ist.
Bestehenden GPG-Schlüssel erweitern
Wenn ein vorhandener GPG-Schlüssel verwendet werden soll muss die im GitLab-Konto hinterlegte E-Mail-Adresse mit als “User-ID” beim Schlüssel hinzugefügt werden.
Dazu alle Schlüssel auflisten…
gpg --list-secret-keys --keyid-format LONG… und die ID des Gewünschten notieren. Die Ausgabe kann mehrere private Schlüssel enthalten. Im folgenden Beispiel steht ID 352422B00B179048 des Schlüssels in der Zeile mit sec:
sec   rsa4096/352422B00B179048 2014-08-23 [SC] [verfällt: 2017-08-23]
      B47F9BA26DEE50629620DB72352422B00B179048
uid              [ ultimativ ] Thomas Hartl <thomas.hartl@soltari.at>
ssb   rsa4096/8DE66AE00599CC0D 2014-08-23 [E] [verfällt: 2017-08-23]Mit dieser Information kann der Schlüssel um die “User-ID” erweitert werden:
gpg --edit-key 352422B00B179048
gpg> adduid
[... den Anweisungen des Assistenten folgen ...]
gpg> saveÖffentlichen GPG-Schlüssel im hinterlegen
GPG-Schlüssel exportieren
Der öffentliche GPG-Schlüssel (Public Key) muss nun exportiert und anschließend im GitLab-Konto hinterlegt werden. Dazu den Public Key anzeigen und inklusive der Zeilen -----BEGIN PGP PUBLIC KEY BLOCK----- und -----END PGP PUBLIC KEY BLOCK----- kopieren:
gpg --armor --export 352422B00B179048Im GitLab-Konto hinterlegen
Den Public Key in den GitLab-Benutzereinstellungen unter “GPG Keys” hinzufügen:

Im GitHub-Konto hinterlegen
In GitHub kann der Schlüssel unter Settings > SSH and GPG keys hinzugefügt werden.
GPG-Schlüssel in Git konfigurieren
Der folgende Befehl weist Git an, den GPG-Schlüssel mit ID 352422B00B179048 zum Signieren zu verwenden:
git config --global user.signingkey 352422B00B179048Commits signieren
Um Commits tatsächlich zu signieren gibt es zwei Möglichkeiten:
Entweder einzelne Commits mit dem Parameter -S signieren:
git commit -S -m "Dies ist ein signierter Commit."Oder die Git-Option commit.gpgsign setzen, um alle Commits standardmäßig zu signieren:
git config --global commit.gpgsign trueQuellen
- Git-SCM: Signing Your Work
- GitLab: Sign commits with GPG
- GitHub: Adding a GPG key to your GitHub account
