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] Steffen Flohrer <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