Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| letsencrypt_dns01 [2020/05/09 20:31] – [Schritt 2: Key in bind-config eintragen] ischluff | letsencrypt_dns01 [2026/07/26 21:08] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== | + | ###### |
| - | ===== Warum eigentlich dns-01? | + | ##### Warum eigentlich dns-01? |
| - | Die '' | + | |
| - | Das Hauptproblem sind die Domains | + | 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 '' | + | 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 auf den Ports '' | ||
| + | '' | ||
| - | 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 '' | + | |
| - | < | + | |
| - | / | + | |
| - | </ | + | |
| - | Das Kommando generiert zwei Dateien: '' | + | |
| - | Die Zahl hinter '' | + | |
| - | ===== Schritt 2: Key in bind-config eintragen ===== | + | Als '' |
| - | In ''/ | + | folgendes ausführen: \< |
| - | Dieser Block macht den Key unter dem angegebenen Namen den bind-Server bekannt. | + | 256 -n USER le-dns-challenge.live.somewhere.c3voc.de. \</code\> Das |
| - | < | + | Kommando generiert zwei Dateien: |
| - | key "le-dns-challenge.live.somewhere.c3voc.de" | + | '' |
| - | algorithm hmac-sha256; | + | Zahl hinter '' |
| - | secret " | + | 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.de | + | |
| - | </ | + | |
| - | 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 ('' | + | folgenden beiden Blöcke (am Ende der Datei) aufnehmen: |
| - | < | + | "\_acme-challenge.cdn.c3voc.de" { … }; zone |
| - | $ORIGIN | + | " |
| - | @ | + | |
| - | </ | + | |
| - | Zum Abschluss den DNS-Server reloaden: `sudo service reload bind9` | + | Eine Datei \`/ |
| + | mit folgendem Inhalt anlegen: Dies ist eine leere Zonendatei, die in | ||
| + | Zukunft vom bind-Server verwaltet werden wird. \< | ||
| + | 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 \</ | ||
| - | ===== Key und Private in KeePass eintragen ===== | + | In der Datei ''/ |
| - | In der Gruppe | + | Serial-Nr um 1 erhöhen und am Ende einen solchen Block einfügen Dieser |
| - | Unter '' | + | Block deligiert die Sub-Zone |
| + | DNS-Server ('' | ||
| + | für die '' | ||
| + | muss. \< | ||
| + | NS ns1.c3voc.de. \</ | ||
| + | Zum Abschluss den DNS-Server reloaden: \`sudo service bind9 reload\` | ||
| - | ===== Schritt 4: Neuen Host deployen | + | ##### Key und Private in KeePass eintragen |
| - | Ein Ansible-Deployment mit '' | + | |
| + | 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. | ||