GnuPG/Agent: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
K Textersetzung - „== Syntax ==“ durch „== Aufruf ==“ |
||
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
''' | '''GnuPG-Agent''' - Hintergrundprogramm für gecachte Passwörter | ||
== Beschreibung == | == Beschreibung == | ||
Wie der ssh-agent (bei [[OpenSSH]]) dient der gpg-agent, der seit GnuPG 2.0.x integraler Bestandteil ist, unter anderem dazu, die Passphrase für einen konfigurierbaren Zeitraum im Arbeitsspeicher zu halten, sodass eine erneute Eingabe entfällt; gpg-agent speichert die Passphrase aber nicht nur, sondern übernimmt auch ihre Abfrage vom Anwender (über ein konfigurierbares Hilfsprogramm) | Wie der ssh-agent (bei [[OpenSSH]]) dient der gpg-agent, der seit GnuPG 2.0.x integraler Bestandteil ist, unter anderem dazu, die Passphrase für einen konfigurierbaren Zeitraum im Arbeitsspeicher zu halten, sodass eine erneute Eingabe entfällt; gpg-agent speichert die Passphrase aber nicht nur, sondern übernimmt auch ihre Abfrage vom Anwender (über ein konfigurierbares Hilfsprogramm) | ||
* Anders als bei OpenSSH ist der gpg-agent allerdings ab Version 2 von GnuPG zwingender Bestandteil; in der künftigen Version 2.1 werden sogar alle Operationen, die private Schlüssel beinhalten, an gpg-agent ausgelagert, was es ermöglicht, die Schlüssel auf einem anderen Rechner zu speichern und nur noch indirekt zu verwenden | * Anders als bei OpenSSH ist der gpg-agent allerdings ab Version 2 von GnuPG zwingender Bestandteil; in der künftigen Version 2.1 werden sogar alle Operationen, die private Schlüssel beinhalten, an gpg-agent ausgelagert, was es ermöglicht, die Schlüssel auf einem anderen Rechner zu speichern und nur noch indirekt zu verwenden | ||
* Die zweite wichtige Aufgabe von gpg-agent bei GnuPG 2.0.x ist der Zugriff auf Smartcards | * Die zweite wichtige Aufgabe von gpg-agent bei GnuPG 2.0.x ist der Zugriff auf Smartcards | ||
Der Kontakt zu einer Instanz von gpg-agent, die nicht den Standardsocket verwendet (es können mehrere gleichzeitig laufen, was aber meist nicht sinnvoll ist), wird über eine Umgebungsvariable ermöglicht | Der Kontakt zu einer Instanz von gpg-agent, die nicht den Standardsocket verwendet (es können mehrere gleichzeitig laufen, was aber meist nicht sinnvoll ist), wird über eine Umgebungsvariable ermöglicht | ||
* Ein Beispiel: Über den Befehl <code>gpg-agent --daemon thunderbird</code> wird der Mailclient [[Mozilla Thunderbird|Thunderbird]] gestartet, und zwar mit der Umgebungsvariable <code> | * Ein Beispiel: Über den Befehl <code>gpg-agent --daemon thunderbird</code> wird der Mailclient [[Mozilla Thunderbird|Thunderbird]] gestartet, und zwar mit der Umgebungsvariable <code>GnuPG_AGENT_INFO</code> | ||
* Diese enthält eine Zeichenkette wie <code>/tmp/gpg-xY9Q7R/S.gpg-agent:2244:1</code> (Pfad des Socket, PID von gpg-agent (wird ignoriert) und Versionsnummer des Protokolls) | * Diese enthält eine Zeichenkette wie <code>/tmp/gpg-xY9Q7R/S.gpg-agent:2244:1</code> (Pfad des Socket, PID von gpg-agent (wird ignoriert) und Versionsnummer des Protokolls) | ||
* Hierdurch kann das Mailprogramm Kontakt mit dem jeweiligen gpg-agent aufnehmen und ihm den Umgang mit den privaten Schlüsseln (und deren Passphrase) überlassen | * Hierdurch kann das Mailprogramm Kontakt mit dem jeweiligen gpg-agent aufnehmen und ihm den Umgang mit den privaten Schlüsseln (und deren Passphrase) überlassen | ||
Bei den meisten unixoiden Desktopumgebungen wird der gpg-agent gleich beim Start aktiviert | Bei den meisten unixoiden Desktopumgebungen wird der gpg-agent gleich beim Start aktiviert | ||
* Dadurch, dass das Startscript der Desktopumgebung diese Umgebungsvariable exportiert, haben alle Programme Zugriff darauf | * Dadurch, dass das Startscript der Desktopumgebung diese Umgebungsvariable exportiert, haben alle Programme Zugriff darauf | ||
* Wenn gpg-agent nicht läuft (oder nicht gefunden wird), wird es von gpg, gpgsm und gpgconf automatisch gestartet | * Wenn gpg-agent nicht läuft (oder nicht gefunden wird), wird es von gpg, gpgsm und gpgconf automatisch gestartet | ||
* Zugriff auf einen laufenden gpg-agent kann man in der Konsole über das Programm ''gpg-connect-agent'' bekommen | * Zugriff auf einen laufenden gpg-agent kann man in der Konsole über das Programm ''gpg-connect-agent'' bekommen | ||
* Mit dem Server kann man dann über das textbasierte Assuan-Protokoll | * Mit dem Server kann man dann über das textbasierte Assuan-Protokoll kommunizieren | ||
* Man kann gpg-agent daher auch unabhängig von OpenPGP und OpenSSH zur Verwaltung von Passphrasen für eigene Programme nutzen. Über die Konfigurationsdatei gpg-agent.conf wird u. a | * Man kann gpg-agent daher auch unabhängig von OpenPGP und OpenSSH zur Verwaltung von Passphrasen für eigene Programme nutzen. Über die Konfigurationsdatei gpg-agent.conf wird u. a | ||
* festgelegt, über welchen Zeitraum eine Passphrase gecacht wird | * festgelegt, über welchen Zeitraum eine Passphrase gecacht wird | ||
Man kann nicht direkt abfragen, welche Einträge gpg-agent gerade speichert, aber man kann testen, ob ein konkreter Eintrag vorhanden ist (und sich den auch anzeigen lassen) | Man kann nicht direkt abfragen, welche Einträge gpg-agent gerade speichert, aber man kann testen, ob ein konkreter Eintrag vorhanden ist (und sich den auch anzeigen lassen) | ||
* GnuPG legt die Passphrase eines Schlüssels unter dessen Fingerprint ab (ggf | * GnuPG legt die Passphrase eines Schlüssels unter dessen Fingerprint ab (ggf | ||
* dem des betroffenen Unterschlüssels): | * dem des betroffenen Unterschlüssels): | ||
> gpg-connect-agent "GET_PASSPHRASE --data --no-ask 4F7E9F723D197D667842AE115F048E6F0E4B4494 t1 t2 t3" /bye | |||
D fubar | |||
OK | |||
Ebenso kann man eine Passphrase setzen, sodass sie nicht vom Anwender abgefragt werden muss (etwa bei automatisierten Prozessen) | Ebenso kann man eine Passphrase setzen, sodass sie nicht vom Anwender abgefragt werden muss (etwa bei automatisierten Prozessen) | ||
* Dafür gibt es sogar eine eigene Anwendung: gpg-preset-passphrase | * Dafür gibt es sogar eine eigene Anwendung: gpg-preset-passphrase | ||
Mit gpg-connect-agent kann man auch auf einfache Weise testen, ob gpg-agent überhaupt läuft (bzw. so läuft, dass es unmittelbar verwendet werden kann): | Mit gpg-connect-agent kann man auch auf einfache Weise testen, ob gpg-agent überhaupt läuft (bzw. so läuft, dass es unmittelbar verwendet werden kann): | ||
# gpg-connect-agent /bye | |||
gpg-connect-agent: can't connect to the agent: IPC "connect" Aufruf fehlgeschlagen | |||
; Funktion | |||
*Das automatisch von GnuPG für die Eingabe und das Cachen von Passwörtern verwendet wird | |||
*Speichert das Passwort in einem Cache und fragt nur nach festlegbaren Zeitintervallen erneut danach | |||
== Installation == | == Installation == | ||
Zeile 44: | Zeile 43: | ||
# apt install gnupg-agent pinentry-curses | # apt install gnupg-agent pinentry-curses | ||
== | == Aufruf == | ||
=== Optionen === | === Optionen === | ||
{|class="wikitable" | {|class="wikitable" | ||
!Option !! Beschreibung | !Option !! Beschreibung | ||
|- | |- | ||
| --daemon || Normaler Aufruf, um den Dämon zu starten | | --daemon || Normaler Aufruf, um den Dämon zu starten | ||
|- | |- | ||
| --ignore-cache-for-signing || Erzwingt eine erneute Passworteingabe, um andere Schlüssel zu signieren | | --ignore-cache-for-signing || Erzwingt eine erneute Passworteingabe, um andere Schlüssel zu signieren | ||
|- | |- | ||
| --default-cache-ttl n || Setzt die Zeit, wie lange ein Passwort im Cache bleibt, auf n Sekunden. Standard ist 600 | | --default-cache-ttl n || Setzt die Zeit, wie lange ein Passwort im Cache bleibt, auf n Sekunden. Standard ist 600 | ||
|- | |- | ||
| --max-cache-ttl n | | --max-cache-ttl n || Setzt die maximale Zeit, wie lange ein Passwort im Cache bleibt, auf n Sekunden. Standard ist 7200 (2 Stunden) | ||
|- | |- | ||
| --pinentry-program filename || Setzt explizit das Passworteingabeprogramm auf filename | | --pinentry-program filename || Setzt explizit das Passworteingabeprogramm auf filename | ||
|} | |} | ||
=== Parameter === | === Parameter === | ||
=== | === Umgebung === | ||
=== | === Rückgabewert === | ||
== Anwendung == | == Anwendung == | ||
=== | === Problembehebung === | ||
== Konfiguration == | == Konfiguration == | ||
=== Dateien === | === Dateien === | ||
<noinclude> | <noinclude> | ||
== Anhang == | == Anhang == | ||
=== Siehe auch === | === Siehe auch === | ||
{{Special:PrefixIndex/{{BASEPAGENAME}}}} | {{Special:PrefixIndex/{{BASEPAGENAME}}}} | ||
---- | ---- | ||
* [[ | * [[GnuPG]] | ||
* [[pinentry-curses]] | * [[pinentry-curses]] | ||
Zeile 78: | Zeile 78: | ||
==== Dokumentation ==== | ==== Dokumentation ==== | ||
===== RFC ===== | ===== RFC ===== | ||
===== Man-Page ===== | |||
==== Links ==== | ==== Links ==== | ||
===== Projekt ===== | ===== Projekt ===== | ||
===== Weblinks ===== | ===== Weblinks ===== | ||
# https://wiki.ubuntuusers.de/ | # https://wiki.ubuntuusers.de/GnuPG-Agent/ | ||
# https://wiki.ubuntuusers.de/GnuPG/ | # https://wiki.ubuntuusers.de/GnuPG/ | ||
</noinclude> | </noinclude> | ||
[[Kategorie:GnuPG]] |
Aktuelle Version vom 12. November 2024, 18:41 Uhr
GnuPG-Agent - Hintergrundprogramm für gecachte Passwörter
Beschreibung
Wie der ssh-agent (bei OpenSSH) dient der gpg-agent, der seit GnuPG 2.0.x integraler Bestandteil ist, unter anderem dazu, die Passphrase für einen konfigurierbaren Zeitraum im Arbeitsspeicher zu halten, sodass eine erneute Eingabe entfällt; gpg-agent speichert die Passphrase aber nicht nur, sondern übernimmt auch ihre Abfrage vom Anwender (über ein konfigurierbares Hilfsprogramm)
- Anders als bei OpenSSH ist der gpg-agent allerdings ab Version 2 von GnuPG zwingender Bestandteil; in der künftigen Version 2.1 werden sogar alle Operationen, die private Schlüssel beinhalten, an gpg-agent ausgelagert, was es ermöglicht, die Schlüssel auf einem anderen Rechner zu speichern und nur noch indirekt zu verwenden
- Die zweite wichtige Aufgabe von gpg-agent bei GnuPG 2.0.x ist der Zugriff auf Smartcards
Der Kontakt zu einer Instanz von gpg-agent, die nicht den Standardsocket verwendet (es können mehrere gleichzeitig laufen, was aber meist nicht sinnvoll ist), wird über eine Umgebungsvariable ermöglicht
- Ein Beispiel: Über den Befehl
gpg-agent --daemon thunderbird
wird der Mailclient Thunderbird gestartet, und zwar mit der UmgebungsvariableGnuPG_AGENT_INFO
- Diese enthält eine Zeichenkette wie
/tmp/gpg-xY9Q7R/S.gpg-agent:2244:1
(Pfad des Socket, PID von gpg-agent (wird ignoriert) und Versionsnummer des Protokolls) - Hierdurch kann das Mailprogramm Kontakt mit dem jeweiligen gpg-agent aufnehmen und ihm den Umgang mit den privaten Schlüsseln (und deren Passphrase) überlassen
Bei den meisten unixoiden Desktopumgebungen wird der gpg-agent gleich beim Start aktiviert
- Dadurch, dass das Startscript der Desktopumgebung diese Umgebungsvariable exportiert, haben alle Programme Zugriff darauf
- Wenn gpg-agent nicht läuft (oder nicht gefunden wird), wird es von gpg, gpgsm und gpgconf automatisch gestartet
- Zugriff auf einen laufenden gpg-agent kann man in der Konsole über das Programm gpg-connect-agent bekommen
- Mit dem Server kann man dann über das textbasierte Assuan-Protokoll kommunizieren
- Man kann gpg-agent daher auch unabhängig von OpenPGP und OpenSSH zur Verwaltung von Passphrasen für eigene Programme nutzen. Über die Konfigurationsdatei gpg-agent.conf wird u. a
- festgelegt, über welchen Zeitraum eine Passphrase gecacht wird
Man kann nicht direkt abfragen, welche Einträge gpg-agent gerade speichert, aber man kann testen, ob ein konkreter Eintrag vorhanden ist (und sich den auch anzeigen lassen)
- GnuPG legt die Passphrase eines Schlüssels unter dessen Fingerprint ab (ggf
- dem des betroffenen Unterschlüssels):
> gpg-connect-agent "GET_PASSPHRASE --data --no-ask 4F7E9F723D197D667842AE115F048E6F0E4B4494 t1 t2 t3" /bye D fubar OK
Ebenso kann man eine Passphrase setzen, sodass sie nicht vom Anwender abgefragt werden muss (etwa bei automatisierten Prozessen)
- Dafür gibt es sogar eine eigene Anwendung: gpg-preset-passphrase
Mit gpg-connect-agent kann man auch auf einfache Weise testen, ob gpg-agent überhaupt läuft (bzw. so läuft, dass es unmittelbar verwendet werden kann):
# gpg-connect-agent /bye gpg-connect-agent: can't connect to the agent: IPC "connect" Aufruf fehlgeschlagen
- Funktion
- Das automatisch von GnuPG für die Eingabe und das Cachen von Passwörtern verwendet wird
- Speichert das Passwort in einem Cache und fragt nur nach festlegbaren Zeitintervallen erneut danach
Installation
Wichtig ist außerdem, dass man noch ein Passworteingabeprogramm,z. B. pinentry-curses für die jeweilige Desktop-Umgebung benötigt
# apt install gnupg-agent pinentry-curses
Aufruf
Optionen
Option | Beschreibung |
---|---|
--daemon | Normaler Aufruf, um den Dämon zu starten |
--ignore-cache-for-signing | Erzwingt eine erneute Passworteingabe, um andere Schlüssel zu signieren |
--default-cache-ttl n | Setzt die Zeit, wie lange ein Passwort im Cache bleibt, auf n Sekunden. Standard ist 600 |
--max-cache-ttl n | Setzt die maximale Zeit, wie lange ein Passwort im Cache bleibt, auf n Sekunden. Standard ist 7200 (2 Stunden) |
--pinentry-program filename | Setzt explizit das Passworteingabeprogramm auf filename |