Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| letsencrypt_dns01 [2018/02/03 22:21] – created mazdermind | letsencrypt_dns01 [2026/07/26 21:08] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | HowTo Relay/ | + | ###### |
| - | ================================================= | + | |
| - | Warum eigentlich | + | ##### Warum eigentlich dns-01? |
| - | -------------------------- | + | |
| - | Die `dns-01`-Challenge ist eindeutig komplizierter als die meist als Default eingesetzte `http-01`-Challenge, | + | |
| - | Das Hauptproblem sind die Domains `streaming.media.ccc.de` und `cdn.c3voc.de`, | + | Die '' |
| - | Vor dem 34C3 lief das so und da die LE-Clients es im Fehlerfall nach einiger Zeit erneut versuchen kam irgendwann auch mal eine erfolgreiche Challenge-Response durch – aber verlässlich ist das nicht und es bricht auch falls wir irgendwann mal mehr LBs als 2 einsetzen wollen. | + | Default eingesetzte '' |
| + | unserem Nutzungskontext einige Probleme- | ||
| - | Zusätzlich umgeht | + | Das Hauptproblem sind die Domains '' |
| + | '' | ||
| + | Bei klassischer '' | ||
| + | Challege-Response in einem Ordner unterhalb der Domain und Let' | ||
| + | fragt diese dann an. Da die Domain aber von zwei Servern betreut wird | ||
| + | besteht eine 50% Chance, dass LE die Datei vom falschen der beiden | ||
| + | abfragt und daher das Renewal fehlschlägt. Vor dem 34C3 lief das so und | ||
| + | da die LE-Clients es im Fehlerfall nach einiger Zeit erneut versuchen | ||
| + | kam irgendwann auch mal eine erfolgreiche Challenge-Response durch – | ||
| + | aber verlässlich ist das nicht und es bricht auch falls wir irgendwann | ||
| + | mal mehr LBs als 2 einsetzen wollen. | ||
| - | Letztenendes erlaubt es uns `dns-01` auch Hosts mit korrekten LE-Zertifikaten zu versorgen, die selbst | + | Zusätzlich umgeht die '' |
| + | Systemtyp einen nginx oder einem haproxy oder beiden bedient werden. | ||
| + | Auch wird das Ausrollen von neuen Systemen einfacher, da nicht mehr | ||
| + | unterschieden werden muss, ob bereits ein Dienst | ||
| + | '' | ||
| - | Dies rechtfertigt mMn. die einmalige, komplexere Konfiguration. Während des Congresses empfiehlt | + | Letztenendes erlaubt |
| + | LE-Zertifikaten zu versorgen, die selbst nicht im Internet Verfügbar | ||
| + | sind ('' | ||
| + | Dies rechtfertigt mMn. die einmalige, komplexere Konfiguration. Während | ||
| + | des Congresses empfiehlt es sich dennoch, die | ||
| + | [letsencrypt_fake](letsencrypt_fake)-Config zu verwenden. | ||
| - | Schritt 1: DNSSEC-Keypair generieren | + | ##### Schritt 1: DNSSEC-Keypair generieren |
| - | ------------------------------------ | + | |
| - | Als `voc@mngslave.dus.c3voc.de` in einem Verzeichnis deiner Wahl folgendes ausführen: | + | |
| - | < | + | |
| - | / | + | |
| - | </ | + | |
| - | Das Kommando generiert zwei Dateien: `Kle-dns-challenge.live.somewhere.c3voc.de.+163+*.{key, | + | |
| - | Die Zahl hinter `+163+` ist offenbar eine Zufahllszahl, | + | |
| - | Schritt 2: Key in bind-config eintragen | + | Als '' |
| - | --------------------------------------- | + | folgendes ausführen: \< |
| - | In `/ | + | 256 -n USER le-dns-challenge.live.somewhere.c3voc.de. \</code\> Das |
| - | Dieser Block macht den Key unter dem angegebenen Namen den bind-Server bekannt. | + | Kommando generiert zwei Dateien: |
| - | < | + | '' |
| - | key "le-dns-challenge.live.somewhere.c3voc.de" | + | Zahl hinter '' |
| - | | + | manchmal gebrauchen… |
| - | | + | |
| - | }; | + | |
| - | </ | + | |
| - | In der gleichen Datei einen solchen Block einfügen: | + | ##### Schritt 2: Key in bind-config eintragen |
| - | Dieser Block definiert eine neue Sub-Zone für die ACME-Challenges. Der Key wird nur in der Lage sein, diese Sub-Zone zu verändern. | + | |
| - | < | + | |
| - | zone " | + | |
| - | type master; | + | |
| - | file "/ | + | |
| - | masterfile-format text; | + | |
| - | allow-update { key " | + | |
| - | }; | + | |
| - | </ | + | |
| - | Wenn der neue Host ein LoadBalancer ist, den Key ebenfalls in die folgenden beiden Blöcke (am Ende der Datei) aufnehmen: | + | In ''/ |
| - | < | + | einfügen. Darin das Secret aus der '' |
| - | zone "_acme-challenge.cdn.c3voc.de" | + | Block macht den Key unter dem angegebenen Namen den bind-Server bekannt. |
| - | zone "_acme-challenge.streaming.media.ccc.de" | + | \<code\> key "le-dns-challenge.live.somewhere.c3voc.de" |
| - | </ | + | hmac-sha256; secret |
| + | \</code\> | ||
| - | Eine Datei `/ | + | In der gleichen |
| - | Dies ist eine leere Zonendatei, die in Zukunft vom bind-Server verwaltet werden wird. | + | definiert eine neue Sub-Zone für die ACME-Challenges. Der Key wird nur |
| - | < | + | in der Lage sein, diese Sub-Zone zu verändern. \< |
| - | $ORIGIN . | + | " |
| - | $TTL 600 ; 10 minutes | + | "/ |
| - | _acme-challenge.live.somewhere.c3voc.de | + | masterfile-format text; allow-update { key |
| - | 1 | + | " |
| - | 86400 | + | |
| - | 7200 | + | |
| - | 3600000 | + | |
| - | 600 | + | |
| - | ) | + | |
| - | NS ns1.c3voc.d | + | |
| - | </ | + | |
| - | In der Datei `/ | + | Wenn der neue Host ein LoadBalancer ist, den Key ebenfalls in die |
| - | Dieser Block deligiert die Sub-Zone mit den ACME-Challenges an einen einzelnen DNS-Server (`ns1.c3voc.de. == `mngslave.dus.c3voc.de.`), so dass für dei `dns-01`-Challenge nur dieser eine Server aktualisiert werden muss. | + | folgenden beiden Blöcke (am Ende der Datei) aufnehmen: \<code\> zone |
| - | < | + | "\_acme-challenge.cdn.c3voc.de" { … }; zone |
| - | $ORIGIN | + | " |
| - | @ | + | |
| - | </ | + | |
| - | Schritt 3: Key und Private in KeePass eintragen | + | Eine Datei \`/var/ |
| - | ----------------------------------------------- | + | mit folgendem Inhalt |
| - | In der Gruppe | + | Zukunft vom bind-Server verwaltet werden wird. \< |
| - | Unter `Advanced-> | + | 600 ; 10 minutes \_acme-challenge.live.somewhere.c3voc.de IN SOA |
| + | ns1.c3voc.de. fl.n621.de. ( 1 ; serial 86400 ; refresh (1 day) 7200 ; | ||
| + | retry (2 hours) 3600000 ; expire (5 weeks 6 days 16 hours) 600 ; minimum | ||
| + | (10 minutes) ) NS ns1.c3voc.de \</ | ||
| + | In der Datei ''/ | ||
| + | Serial-Nr um 1 erhöhen und am Ende einen solchen Block einfügen Dieser | ||
| + | Block deligiert die Sub-Zone mit den ACME-Challenges an einen einzelnen | ||
| + | DNS-Server ('' | ||
| + | für die '' | ||
| + | muss. \< | ||
| + | NS ns1.c3voc.de. \</ | ||
| - | Schritt 4: Neuen Host deployen | + | Zum Abschluss den DNS-Server reloaden: \`sudo service bind9 reload\` |
| - | ------------------------------ | + | |
| - | Ein Ansible-Deployment mit `--tags letsencrypt` sollte nun erfolgreich sein und alle nötigen Zertifikate anlegen. | + | ##### Key und Private in KeePass eintragen |
| + | |||
| + | In der Gruppe '' | ||
| + | '' | ||
| + | lassen. Unter '' | ||
| + | Namen '' | ||
| + | Datei einfügen, darauf achten, dass der Eintrag mit exakt einem | ||
| + | Zeilenumbruch endet. | ||
| + | |||
| + | ##### Schritt 4: Neuen Host deployen | ||
| + | |||
| + | Ein Ansible-Deployment mit '' | ||
| + | sein und alle nötigen Zertifikate anlegen. | ||