Git Commit mit GPG-Schlüssel signieren
Git Commits lassen sich mit einem GPG-Schlüssel signieren und so die Integrität sicherstellen.
Die Integrität, also der Schutz der Information vor Modifikation, Einfügen, Löschung, Umordnung, etc. wird sichergestellt. Wird die Information nicht vom Inhaber des GPG-Schlüssels bearbeitet, ändert sich die Signatur. Damit lässt sich für jeden einfach nachvollziehen, ob man dem Code vertrauen kann oder nicht.
Das ist eine elegante Möglichkeit für den Entwickler seiner Community "nachzuweisen", dass die Änderungen am Code auch wirklich von ihm stammen und erhöht das Vertrauen.
Voraussetzung ist natürlich, dass die Schlüssel die zum Signieren verwendet werden vom Entwickler auch sorgfältig verwaltet werden, damit unberechtigte Dritte darauf keinen Zugriff erhalten.
Eine Möglichkeit dafür ist die Verwendung von Smart Cards oder Hardwaretokens, wie einem YubiKey oder Nitrokey.
In den Einstellungen unter SSH- / GPG-Schlüssel
findet sich die Funktion GPG-Schlüssel verwalten mit der Beschreibung:
GPG-Schlüssel verwalten
Diese öffentlichen GPG-Keys sind mit deinem Account verbunden. Halte die dazugehörigen privaten GPG-Keys geheim, da diese deine Commits signieren.
Nach der Installation funktioniert alles wie gewohnt und die Meldung taucht nicht mehr auf.
Dahinter verbirgt sich die Möglichkeit seinen eigenen GPG-Schlüssel bei Codeberg zu hinterlegen und die Echtheit jedes Git Commits zu garantieren.
Damit das Ganze genutzt werden kann, ist ein eigener GPG-Schlüssel zu erstellen. Die Anleitung dafür findet sich 👉 hier im Blog
Sind die privaten und öffentlichen Schlüssel erstellt, lassen sich diese entweder im Key Ring (= Schlüsselbund) oder auf einer Smart Card verwalten.
Ich habe die Schlüssel auf einen YubiKey übertragen und mit einer PIN und einem PUK vor unberechtigte Zugriff geschützt.
Wie ein Übertrag der Schlüssel auf einen Hardwaretoken, wie einem YubiKey oder einem Nitrokey, funktioniert, ist im Beitrag 👉 YubiKey - OpenPGP-Schlüssel auf den YubiKey exportieren beschrieben.
Ist der Hardwaretoken fertig, kann das Einrichten bei Codeberg beginnen.
Im ersten Schritt ist der öffentliche GPG-Schlüssel im eigenen Profil hinzuzufügen. Dafür einfach den kompletten Block
-----BEGIN PGP PUBLIC KEY BLOCK-----
...
-----END PGP PUBLIC KEY BLOCK-----
des eigenen öffentlichen Schlüssels über die Zwischenablage in das Feld kopieren.
Achtung
Der öffentliche GPG-Schlüssel lässt sich NICHT direkt von einem Hardwaretoken (= Smart Card) exportieren. Dafür wird der Masterschlüssel benötigt, der nach meiner 👉 Anleitung NICHT auf den YubiKey übertragen wird.
Der Export funktioniert nur aus dem Schlüsselring, am Einfachsten also über das Betriebssystem über das die Schlüssel erstellt worden sind.
Ist der eigene öffentliche Schlüssel bei Codeberg eingefügt, muss er noch verifiziert werden.
Gib mir gerne einen Kaffee ☕ aus ❗️
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
Das funktioniert relativ einfach. Dazu wird der Hardwaretoken am eigenen Client (Laptop, PC) angesteckt und der Befehl auf der CLI eingegeben, der von Codeberg angezeigt wird.
echo "1112223334445556667778888" | gpg -a --default-key AABBCCDD --detach-sig
Den gesamten angezeigten Block wieder über die Zwischenablage in das Feld einfügen. Bei Erfolg wird die Signatur erkannt und der Schlüssel wird für das Signieren von zukünftigen Git Commits freigeschaltet.
Git Commit signieren
Damit die Commits ab sofort auch mit dem richtigen GPG-Schlüssel übertragen werden, muss der in jedem Repository hinterlegt werden damit es bei jedem Commit mitgegeben werden.
Ich verwende den Git-Client ForK
(👉 Fork Tags) dafür.
Natürlich geht das Signieren auch auf der CLI. Dafür wird einfach die Option -S
mit angegeben.
git commit -S -m "Meine Commit Message"
Der Übertrag in das Git Repository funktioniert bei beiden Optionen, also Fork oder CLI, anschließend wie bisher.
Ab sofort werden alle Git Commits bei angeschlossenem Hardwaretoken signiert und das wird durch das grüne Schloss im Repository auch grafisch dargestellt.
Noch ein paar Worte zur Sicherheit
Der GPG-Schlüssel der zum Signieren der Git Commits verwendet wird, liegt auf einem Hardwaretoken, wie dem YubiKey und lässt sich nur nach dem Anschließen am USB-Port und der Eingabe des PINs aktivieren.
Der Master Key wird nach meiner Anleitung nicht auf den Token übertragen und verbleibt auf dem System auf dem er erstellt wurde.
Der Schlüsselinhaber kann das gesamte System oder nur den Master Key und falls vorhanden das Revoke Zertifikat aufbewahren. Es eignen sich dafür z.B. eine SD-Karte, USB-Stick, CD/DVD, die an einem sicheren Ort verwahrt werden.
Eine weitere Möglichkeit digitale Dokumente zu sichern bieten einige Banken in ihrem Onlinebanking an. Dor lassen sich wichtige Dokumente kostenfrei in digitalen Tresoren abspeichern.
Gib mir gerne einen Kaffee ☕ aus ❗️
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
Follow Me❗️
Source
Foto von Brina Blum auf Unsplash