
Git Commits mit GPG signieren
Git und GPG einrichten, um Commits kryptographisch zu signieren.
Inhalt
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-key
Beim 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 352422B00B179048
Im 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 352422B00B179048
Commits 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 true
Quellen
- Git-SCM: Signing Your Work
- GitLab: Sign commits with GPG
- GitHub: Adding a GPG key to your GitHub account