Git-Commits mit GPG signieren

Nachdem ich nun schon länger mit git arbeite, wollte ich meine Commits mal signieren. Wenn es geht, warum nicht, oder? Immerhin könnte schließlich jeder mit meiner Mailadresse einen Commit ausführen und dann mit dem eigenen SSH-Key pushen. Damit das nicht mehr geht, und auch andere meinen Commits vertrauen können, signiere ich diese nun entsprechend mit GPG-Keys.

Dazu habe ich als erstes gpg mit Hilfe von Brew auf meinem Mac installiert:

Solltet ihr nicht sicher sein, ob GPG installiert ist, könnt ihr einfach mit diesem Schritt prüfen ob alles da ist. So listet ihr die entsprechenden Keys auf:

Beim ersten Aufruf bekommt man dann folgende Meldung.

Dort liegen dann eben die Datenbanken, welche die Keys halten. Sollte diese leer sein, muss ein neuer Schlüssel angelegt werden:

Im Prozess werdet ihr dann nach Vorname, Name, Email und einem Passwort für die Datenbank gefragt. Dieses Passwort solltet ihr Euch unbedingt irgendwo speichern. Ich nutze dafür (wie immer) 1Password. Für mich das beste Tool auf dem Markt wenn es darum geht Passwörter zu verwalten.

Die Ausgabe sieht dann in etwa so aus:

Jetzt können wir die entsprechenden (neuen) Schlüssel noch einmal auslesen:

Wir brauchen hieraus den Teil hinter sec rsa2048/. Also in meinem Fall 1234567890ABCDEF.

Diesen exportieren wir nun, um ihn auf GitHub zu hinterlegen:

Diese Ausgabe fügen wir (inklusive —–BEGIN PGP PUBLIC KEY BLOCK—– und Ende) komplett auf GitHub im Profil als neuen GPG-Key ein. Danach sollte das Ganze so aussehen:

Jetzt müssen wir git nur noch erklären, dass es diesen Key gibt und dass dieser bitte auch verwendet werden soll, um die einzelnen Commits zu signieren.

Theoretisch müsste man nun bei jedem commit -S anhängen, damit der entsprechende Commit auch signiert wird. Das macht natürlich wenig Spaß.

Damit man sich das sparen kann, würde ich in die .gitconfig eine Einstellung aufnehmen, welche direkt dafür sorgt, dass alle commits automatisch und immer signiert werden:

Jetzt musste ich in meinem Fall noch folgende Zeile in meine ~/.bash_profile aufnehmen, damit das Ganze von Bash aus läuft:

Zusätzlich habe die folgende Datei mit dem nachfolgenden Inhalt angelegt: ~/.gnupg/gpg.conf

Leider unterstützt z.B. PHPStorm das ganze Signing noch nicht (und fragt daher nicht nach dem entsprechenden Passwort für den GPGKey. Bei mir klappte es aber, nachdem ich den ersten Commit auf der Bash gemacht habe und das Passwort eingegeben habe, PHPStorm neugestartet hatte und dann erst einen commit über die Oberfläche ausgeführt habe. Vorher hatte ich immer dieser Meldung bekommen:

Fertig! Ab jetzt werden alle Commits entsprechend signiert. Dass ein Commit auf GitHub signiert wurde erkennt man am „Verified“ Badge:

 

Über

Jahrgang 87, gelernter Softwareentwickler und 15 Jahr Erfahrung im Bereich Web-Entwicklung mit PHP. Weiterhin bin ich seit Ende 2013 Magento Certified Developer.

Kommentar verfassen