GPG Public Keys per DNS veröffentlichen
GPG ermöglicht die Veröffentlichung öffentlicher Schlüssel per DNS. Dadurch werden alle Domain-Besitzer unabhängig von den Schlüsselservern, die häufig weder mit Performance, noch mit Komfort glänzen.
Die Prozedur ist relativ einfach und wird von jedem DNS-Dienst unterstützt, der die Veröffentlichung von TXT-Records anbietet; das sollten praktisch alle sein. Die gesamte Prozedur kann sowohl in Linux als auch in Windows ausgeführt werden – vorausgesetzt, man hat GPG installiert.
1. Voraussetzungen
Zwingend benötigt wird relativ wenig:
- Eine eigene Domain (in meinem Fall heikorichter.name)
- Die Möglichkeit zur Veröffentlichung von TXT-Records im DNS
- Ein Webserver
Äußerst empfehlenswert sind zwei weitere Dinge:
- Ein SSL-Zertifikat, das von Browsern aller Systeme als gültig akzeptiert wird
- aktivierter DNSSec-Schutz für die eigene Domain
Streng genommen sind weder SSL, noch DNSSec zeingend erforderlich. Allerdings macht ein Schlüsselaustausch ohne kryptographische Absicherung wenig Sinn. Wer das möchte, der kann auch bei den unsicheren, instabilen, für Manipulationen anfälligen Schlüsselservern bleiben.
Das SSL-Zertifikat darf auf keinen Fall selbstsigniert sein, denn es muss von GPG und den E-Mail-Clients aller potenzieller E-Mail-Absender akzeptiert werden. Wer die 3 Euro pro Jahr nicht hat, der nutzt einfach die kostenlosen Zertifikate von LetsEncrypt.
2. Informationen sammeln
Im ersten Schritt sucht man die ID des eigenen Schlüssels. Tauschen Sie dazu einfach meine E-Mail-Adresse durch Ihre eigene aus:
# gpg --list-keys email@heikorichter.name pub rsa4096 2019-07-14 [SCA] [expires: 2024-07-12] 211A91745398A608AFA09727CD922982DA513FCC uid [ultimate] Heiko Richter <email@heikorichter.name> uid [ultimate] HR-Tech <kontakt@hr-tech.shop> sub rsa4096 2019-07-14 [E] [expires: 2024-07-12]
Im zweiten Schritt lässt nutzt man die gerade herausgefundene Schlüssel-ID, um den Fingerprint anzeigen zu lassen:
# gpg --list-keys --fingerprint 211A91745398A608AFA09727CD922982DA513FCC pub rsa4096 2019-07-14 [SCA] [expires: 2024-07-12] 211A 9174 5398 A608 AFA0 9727 CD92 2982 DA51 3FCC uid [ultimate] Heiko Richter <email@heikorichter.name> uid [ultimate] HR-Tech <kontakt@hr-tech.shop> sub rsa4096 2019-07-14 [E] [expires: 2024-07-12]
3. Bereitstellung per Webserver
Anschließend exportiert man den öffentlichen Schlüssel in eine Datei, die man auf dem eigenen Webserver veröffentlicht (in meinem Fall hier):
# gpg --export --armor 211A91745398A608AFA09727CD922982DA513FCC > pubkey.asc
4. Veröffentlichung per DNS
Anschließend veröffentlicht man die gesammelten Informationen in DNS-Records:
email._pka.heikorichter.name. TXT "v=pka1;fpr=211A91745398A608AFA09727CD922982DA513FCC;uri=https://www.heikorichter.name/downloads/pubkey.asc" kontakt._pka.hr-tech.shop. TXT "v=pka1;fpr=211A91745398A608AFA09727CD922982DA513FCC;uri=https://www.heikorichter.name/downloads/pubkey.asc"
5. Test
Ob der Schlüssel für GPG abrufbar ist, lässt sich mit einer einfachen DNS-Abfrage testen.
Linux-Variante mit dig:
dig email._pka.heikorichter.name TXT ; <<>> DiG 9.11.5-P4-5.1-Debian <<>> email._pka.heikorichter.name TXT ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57160 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;email._pka.heikorichter.name. IN TXT ;; ANSWER SECTION: email._pka.heikorichter.name. 300 IN TXT "v=pka1;fpr=211A91745398A608AFA09727CD922982DA513FCC;uri=https://www.heikorichter.name/downloads/pubkey.asc" ;; Query time: 5 msec ;; SERVER: 213.133.99.99#53(213.133.99.99) ;; WHEN: Sat Dec 28 23:41:08 CET 2019 ;; MSG SIZE rcvd: 176
Windows-Variante mit nslookup:
> nslookup -q=txt email._pka.heikorichter.name
Server: pi.hole
Address: 192.168.178.4
Nicht autorisierende Antwort:
email._pka.heikorichter.name text =
"v=pka1;fpr=211A91745398A608AFA09727CD922982DA513FCC;uri=https://www.heikorichter.name/downloads/pubkey.asc"
Aufrufe: 431
Leave a Comment
Du musst angemeldet sein, um einen Kommentar abzugeben.