Skip to main content

GnuPG Cheet Sheet

Irgendwann hatte ich mal eine Liste mit GPG Befehlen erstellt. Diese möchte ich mit euch teilen. Bevor ich mit den Befehlen anfange, möchte ich kurz meine GPG Config zeigen (~/.gnupg/gpg.conf):

use-agent
keyserver hkp://pgp.mit.edu:11371
keyserver-options auto-key-retrieve

In dieser Config habe ich zum einen eingestellt, dass zum Abfragen des Passworts der GPG-Agent benutzt wird. Dafür benötigt man je nach Distribution/Betriebssystem das Paket “gnupg-agent” (in ArchLinux ist es bereits in gnupg) und “pinentry” (Ubuntu: pinentry-curses, pinentry-gtk2, pinentry-qt und/oder pinentry-qt4). Soweit ich weiß wird in GnuPG 2 der Agent standardmäßig benutzt.

Außerdem habe ich einen Keyserver festgelegt. Dadurch muss man bei den Befehlen, die mit dem Keyserver arbeiten, nicht ständig diesen per “–keyserver” angeben.

In der letzten Zeile habe ich angegeben, dass der Schlüssel automatisch vom Keyserver geholt wird (deshalb muss der Keyserver ebenfalls in der Config festgelegt sein). So wird bei mir in Thunderbird beim Überprüfen der Signatur der E-Mails automatisch der Schlüssel vom Keyserver geholt.

Zu den Befehlen:

Vorweg: Ich benutze immer den Befehl “gpg2”. Ihr könnt natürlich auch “gpg” verwenden.

Schlüssel anzeigen/auflisten

Alle Schlüssel im Keyring erhält man wie folgt:

% gpg2 --list-keys

Um einen bestimmten Schlüssel zu zeigen, gibt man beim letzten Befehl die Schlüssel-ID mit an:

% gpg2 --list-keys $KEY

Den Fingerprint des Schlüssels anzeigen:

% gpg2 --fingerprint $KEY

Die Signaturen des Schlüssels anzeigen:

% gpg2 --list-sigs $KEY

Alle Schlüssel auflisten, von denen man den geheimen Schlüssel hat:

% gpg2 --list-secret-keys

Den Öffentlichen Schlüssel exportieren (in der Konsole angezeigt):

% gpg2 --armor --export $KEY

Um diesen öffentlichen Schlüssel in eine Datei zu speichern:

% gpg2 --armor --output $DATEI --export $KEY

Schlüssel erzeugen

Irgendwann benötigt man einen eigenen Schlüssel oder muss sich einen neuen erzeugen. Dies geht einfach per:

% gpg2 --gen-key

Eigentlich ist alles selbsterklärend. Als Schlüsselart nimmt man “(1) RSA und RSA (voreingestellt)”. Die Schlüssellänge setze ich gerne auf 4096. Beim Verfallsdatum stelle ich immer unendlich ein. Dies kann man später auch ändern (siehe unten). Nicht vergessen den Schlüssel auf einen Keyserver hochzuladen (siehe unten).

Schlüssel bearbeiten

Schlüssel bearbeiten, um diesen z.B. zu ändern oder zu unterschreiben:

% gpg2 --edit-key $KEY

Alternativ: Falls man mehrere eigene Schlüssel hat und beim Bearbeiten mit einem bestimmten Schlüssel unterschreiben möchte:

% gpg2 -u $OWNKEY --edit-key $KEY

Weitere Identität hinzufügen

Wenn man mit dem erzeugten Schlüssel für weitere E-Mail Adressen signieren möchte, dann kann man dies wie folgt machen (man muss vorher in den Bearbeitungsmodus - siehe letzten Abschnitt):

gpg> adduid

Hier gibt man den Namen, die E-Mail Adresse sowie (falls gewünscht) einen Kommentar an. Mit “f” sagt man, dass es so stimmt und mit “save” speichert man den Schlüssel.

Schlüssel unterschreiben

(vorher muss man in den Bearbeitungsmodus gehen - siehe oben)

Unterschreiben kann man mit:

gpg> sign

(hier wird nochmal angezeigt, mit welchem Schlüssel signiert wird)

Wirklich signieren? (j/N) j

(Passwortabfrage)

gpg> trust

Ihre Auswahl? 5 (bzw. je nach Vertrauen abstrufen)

Wollen Sie diesem Schlüssel wirklich uneingeschränkt vertrauen? (j/N) j

gpg> q

Änderungen speichern? (j/N) j

Verfallsdatum setzen und neuen Unterschlüssel erzeugen

Der Alex hat dies ausführlich erklärt. Hier nur ganz kurz zusammengefasst (vorher in den “Bearbeitungsmodus”):

Um das Verfallsdatum bei einem Unterschlüssel zu setzen, muss dieser erst einmal ausgewählt werden und dann das Datum setzen:

gpg> key 1

(In der Liste ist bei dem ausgewählten Unterschlüssel nun ein Stern)

gpg> expire
Ändern des Verfallsdatums des Unterschlüssels.
Bitte wählen Sie, wie lange der Schlüssel gültig bleiben soll.
         0 = Schlüssel verfällt nie
        = Schlüssel verfällt nach n Tagen
      w = Schlüssel verfällt nach n Wochen
      m = Schlüssel verfällt nach n Monaten
      y = Schlüssel verfällt nach n Jahren
Wie lange bleibt der Schlüssel gültig? (0) 6m
Key verfällt am Fr 17 Okt 2014 14:07:11 CEST
Ist dies richtig? (j/N) j

(Passwortabfrage)

gpg> save

Mit “addkey” erzeugt man analog einen Unterschlüssel. Hier wählt man dann am besten “(6) RSA (nur verschlüsseln)” aus. Am Ende das Speichern nicht vergessen.

Keyserver etc

Hat man Änderungen an dem Schlüssel vorgenommen, dann kann man ihn hochladen (ggf. “–keyserver” angeben):

% gpg2 --send-keys $KEY

Benötigt man einen bestimmten Schlüssel vom Keyserver oder möchte diesen nur updaten, dann kann man ihn sich herunterladen:

% gpg2 --recv-keys $KEY

Man sammelt in der ganzen Zeit viele Schlüssel. Diese werden von anderen signiert oder vom Eigentümer aktualisiert (neuer Unterschlüssel, zurückgesetzt, …). Deshalb möchte man von Zeit zu Zeit mal alle Schlüssel in seinem Keyring aktualisieren:

% gpg2 --refresh-keys