Dateien verschlüsseln mit gpg: Difference between revisions
(Created page with "Klassischer Anwendungsfall: Passwörter, die man nicht im Klartext irgendwo rumliegen lassen will = Schlüssel erzeugen = $ gpg --gen-key Alternative: $ gpg --full-gen-k...") |
|||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Anwendungsfälle: |
|||
* Dateien verschlüsseln (e.g. Passwörter, die man nicht im Klartext irgendwo rumliegen lassen will) |
|||
* Git commits signieren |
|||
* ... |
|||
= Schlüssel erzeugen = |
= Schlüssel erzeugen = |
||
$ gpg --gen-key |
$ gpg --gen-key |
||
Danach werden Real Name, Email address und passphrase abgefragt. |
|||
Alternative: |
Alternative: |
||
Line 10: | Line 15: | ||
(alle Optionen werden abgefragt) |
(alle Optionen werden abgefragt) |
||
= Alle Keys auflisten = |
|||
$ gpg --list-keys |
|||
= Keys aus dem Keyring entfernen = |
|||
$ gpg --delete-secret-keys <ID> |
|||
(danach kommt 3x eine Abfrage) |
|||
$ gpg --delete-keys <ID> |
|||
= Expire date ändern = |
|||
Per default ist der Key 2 Jahre lang gültig. Ändern lässt sich dies mit der Option ''gpg --edit-key <ID|Email>'': |
|||
$ pgp --edit-key foobar@example.de |
|||
Darauf kommt man in eine Subshell mit dem Prompt ''gpg>''. Durch Eingabe von ''''?'''' findet man die richtige Option: expire |
|||
gpg>? |
|||
gpg>expire |
|||
Changing expiration time for the primary key. |
|||
Please specify how long the key should be valid. |
|||
0 = key does not expire |
|||
<n> = key expires in n days |
|||
<n>w = key expires in n weeks |
|||
<n>m = key expires in n months |
|||
<n>y = key expires in n years |
|||
Key is valid for? (0) 25y |
|||
Key expires at Mon 04 Nov 2047 12:14:40 PM CET |
|||
Is this correct? (y/N) y |
|||
In diesem Fall haben wir den Key auf 25 Jahre Gültigkeit gesetzt. |
|||
Verlassen kann man das Menu mit q(uit): |
|||
gpg> q |
|||
Save changes? (y/N) y |
|||
= Datei ver- und entschlüsseln = |
= Datei ver- und entschlüsseln = |
||
Line 23: | Line 65: | ||
Hierfür muss man folgenden [[ gpg/vimconfig]] Configschnipsel in seine .vimrc einfügen. Danach kann man die Textdatei direkt mit dem vim öffnen, beim Speichern wird man gefragt, welchen Schlüssel man verwenden will. |
Hierfür muss man folgenden [[ gpg/vimconfig]] Configschnipsel in seine .vimrc einfügen. Danach kann man die Textdatei direkt mit dem vim öffnen, beim Speichern wird man gefragt, welchen Schlüssel man verwenden will. |
||
= Anwendungsfall git = |
|||
Wenn man einen bestimmten gpg Key zum Signieren für Commits verwenden will, muss man die ID (sinnvollerweise auch Name und Email-Adresse) in die git config eintragen und die signing Option aktivieren: |
|||
$ gpg --list-secret-keys --keyid-format=long |
|||
sec rsa3072/39888AA0C2D3DB55 2022-11-10 [SC] [expires: 2047-11-04] |
|||
D09D7ACCEB31A9A705401F6B4EF7447A1D6C392C |
|||
uid [ultimate] Foo Bar <foobar@example.de> |
|||
ssb rsa3072/39888AA0C2D3DB55 2022-11-10 [E] [expires: 2024-11-09] |
|||
Der String unter "sec" ist der richtige, in dem Fall also 39888AA0C2D3DB55. |
|||
Diesen String zur git config dazufügen und signing global anschalten: |
|||
$ git config --global user.signingkey |
|||
$ git config --global commit.gpgsign true |
|||
Überprüfen mit |
|||
$ cat ~/.config/git/config: |
|||
Mehr zum Thema:<br> |
|||
https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key |
|||
= Gpg Keys gemeinsam nutzen = |
= Gpg Keys gemeinsam nutzen = |
||
Line 31: | Line 95: | ||
$ gpg --export <keyname> > example.gpg |
$ gpg --export <keyname> > example.gpg |
||
$ gpg --export-secret-keys <name > example.key |
$ gpg --export-secret-keys <name > example.key |
||
Falls man ein Klartextfile will: |
|||
$ gpg --armor --export <keyID> > example-pub.asc |
|||
Key importieren: |
Key importieren: |
Latest revision as of 21:57, 12 March 2025
Anwendungsfälle:
- Dateien verschlüsseln (e.g. Passwörter, die man nicht im Klartext irgendwo rumliegen lassen will)
- Git commits signieren
- ...
Schlüssel erzeugen
$ gpg --gen-key
Danach werden Real Name, Email address und passphrase abgefragt.
Alternative:
$ gpg --full-gen-key
(alle Optionen werden abgefragt)
Alle Keys auflisten
$ gpg --list-keys
Keys aus dem Keyring entfernen
$ gpg --delete-secret-keys <ID>
(danach kommt 3x eine Abfrage)
$ gpg --delete-keys <ID>
Expire date ändern
Per default ist der Key 2 Jahre lang gültig. Ändern lässt sich dies mit der Option gpg --edit-key <ID|Email>:
$ pgp --edit-key foobar@example.de
Darauf kommt man in eine Subshell mit dem Prompt gpg>. Durch Eingabe von '?' findet man die richtige Option: expire
gpg>? gpg>expire Changing expiration time for the primary key. Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) 25y Key expires at Mon 04 Nov 2047 12:14:40 PM CET Is this correct? (y/N) y
In diesem Fall haben wir den Key auf 25 Jahre Gültigkeit gesetzt.
Verlassen kann man das Menu mit q(uit):
gpg> q Save changes? (y/N) y
Datei ver- und entschlüsseln
$ gpg -e <Dateiname>
verschlüsselt
$ gpg -d <Dateiname>
entschlüsselt
Beachte: Die Originaldatei bleibt erhalten, es wird lediglich zusätzlich eine Datei <name.gpg> angelegt.
Verschlüsselte Datei im vi öffnen
Hierfür muss man folgenden gpg/vimconfig Configschnipsel in seine .vimrc einfügen. Danach kann man die Textdatei direkt mit dem vim öffnen, beim Speichern wird man gefragt, welchen Schlüssel man verwenden will.
Anwendungsfall git
Wenn man einen bestimmten gpg Key zum Signieren für Commits verwenden will, muss man die ID (sinnvollerweise auch Name und Email-Adresse) in die git config eintragen und die signing Option aktivieren:
$ gpg --list-secret-keys --keyid-format=long sec rsa3072/39888AA0C2D3DB55 2022-11-10 [SC] [expires: 2047-11-04] D09D7ACCEB31A9A705401F6B4EF7447A1D6C392C uid [ultimate] Foo Bar <foobar@example.de> ssb rsa3072/39888AA0C2D3DB55 2022-11-10 [E] [expires: 2024-11-09]
Der String unter "sec" ist der richtige, in dem Fall also 39888AA0C2D3DB55.
Diesen String zur git config dazufügen und signing global anschalten:
$ git config --global user.signingkey $ git config --global commit.gpgsign true
Überprüfen mit
$ cat ~/.config/git/config:
Mehr zum Thema:
https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key
Gpg Keys gemeinsam nutzen
Zur gemeinsamen Nutzung einer verschlüsselten Datei kann ein User seinen Key exportieren. Andere User, die ihn importieren, können nun auf dieselbe Datei zugreifen.
Key exportieren:
$ gpg --export <keyname> > example.gpg $ gpg --export-secret-keys <name > example.key
Falls man ein Klartextfile will:
$ gpg --armor --export <keyID> > example-pub.asc
Key importieren:
$ gpg --import example.gpg $ gpg --import example.key
Beim private Key muss das Passwort bekannt sein. Dieses kann der User nachher bei sich ändern:
$ gpg --edit-key <name> > passwd (der User, von dem importiert wurde, muss die alte Passphrase eingeben) (der neue User gibt seine eigene Passphrase ein)
Um hässlichen Warnungen vorzubeugen, will man noch das Trustlevel hochsetzen:
>trust
(4 oder 5 eingeben)
Anmerkung: Das Popup für die Eingabe des Passworts ist per Default eine gtk-Anwendung. Wer z.B. von einer Windows-Workstation mit einem putty kommt, hat hier ein Problem, weil X-forwarding nicht funktioniert. Hier hilft, seinen agent auf tty umzustellen:
$ export GPG_TTY=$(tty) $ gpg-connect-agent updatestartuptty /bye >/dev/null