GPG Schlüssel erstellen und Commits zeichnen
GPG installieren
Windows
Download des Installers {target="_blank"}, anschließend der Installations-Routine Folgen.
Ubuntu
Das Paket gnupg ist bei allen derzeitigen Ubuntu-Versionen vorinstalliert. alternativ kann man in älteren Distributionen (< 17.04) die Installation nachholen:
sudo apt install -y gnupg
Schlüssel erstellen
Schlüssel generieren
Hat man bereits einen Schlüssel erstellt, kann man direkt mit dem nächsten Schritt weitermachen.
gpg --full-generate-key
Für ältere Versionen:
gpg --default-new-key-algo rsa4096 --gen-key
Für die Erstellung des Schlüssels der Bash Routine folgen. Die Schlüssel-Größe sollte mindestens 4096 betragen!
bestehende Schlüssel auslesen
gpg --list-secret-keys --keyid-format LONG
Die Ausgabe sieht wie folgt aus:
/c/Users/qm-b/.gnupg/pubring.kbx
--------------------------------
sec rsa4096/423C7CB643A4CDB7 2019-11-23 [SC]
51D03F5DAEF32A25E2D95E2B423C7CB643A4CDB7
uid [ultimate] qm-b <qm-b@outlook.de>
ssb rsa4096/41B6301F366229B8 2019-11-23 [E]
Der Part, der uns daran interessiert ist in Zeile 3 nach dem slash:
423C7CB643A4CDB7
Als nächstes lassen wir den Schlüssel exportieren über: (Zeichenfolge anpassen!!)
gpg --armor --export 423C7CB643A4CDB7
Kopiere den GPG key, beginnend mit -----BEGIN PGP PUBLIC KEY BLOCK-----
und endend mit -----END PGP PUBLIC KEY BLOCK-----
(inklusive dem Start- und End-Punkt!!).
Anschließend den kopierten Part in Gitea und/oder Github als GPG Schlüssel erfassen.
Git über den Schlüssel informieren
Um Commits signieren zu können muss man als erstes Git über den Schlüssel informieren. Wir nehmen wieder
aus dem obigen Code-Abschnitt 423C7CB643A4CDB7
und führen mit diesem den folgenden Command aus:
git config --global user.signingKey 423C7CB643A4CDB7
So weiß Git, wo er den Schlüssel zu finden hat. Optional kann man, wenn man mehrere Schlüssel verwendet,
auch anstelle der globalen Konfiguration diese auch für jedes Repo setzen, dass diesen GPG Schlüssel
verwenden soll, indem man das --global
Argument einfach weglässt und den Command in jedem Git-Repo
ausführt, in dem man diesen Schlüssel verwenden will.
git config user.signingKey 423C7CB643A4CDB7
Commits/tags signieren
Um signierte Commits zu versenden muss man an den Commit Command das Argument -S
anfügen. So lautet
der Command nun:
git commit -S -m "My message"
Automatisch signieren
Optional kann man Commits auch automatisch signieren
git config --global commit.gpgSign true