Let's Encrypt Wildcard-Zertifikate¶
Die DNS-01 Challenge ist die sauberste Methode, um SSL-Zertifikate zu generieren, besonders für interne Dienste im LAN oder für Wildcard-Zertifikate (*.it-virtuoso.de). Der große Vorteil: Der Webserver muss nicht über Port 80/443 aus dem Internet erreichbar sein.
Funktionsweise (Sequenzdiagramm)¶
Der Prozess nutzt einen temporären DNS-TXT-Eintrag zur Validierung der Inhaberschaft.
sequenceDiagram
participant S as Ziel-Server (Certbot/acme.sh)
participant DNS as Eigener DNS-Server (PowerDNS)
participant LE as Let's Encrypt (ACME)
S->>S: Erstellt CSR & Nonce
S->>LE: "Ich möchte Zertifikat für *.it-virtuoso.de"
LE-->>S: "Ok, erstelle TXT-Record: _acme-challenge"
S->>DNS: API-Update (RFC 2136): Setze TXT-Token
Note over DNS: DNS-Zone wird aktualisiert
S->>LE: "TXT-Record ist bereit!"
LE->>DNS: DNS-Abfrage (TXT)
DNS-->>LE: Token gefunden
LE-->>S: Validierung erfolgreich!
LE->>S: Zertifikat wird ausgestellt
S->>DNS: API-Update: Lösche TXT-Record (Cleanup) Fortgeschrittene Delegierung mit acme-dns¶
Eine architektonisch sauberere und sicherere Methode ist die Nutzung eines dedizierten acme-dns Dienstes. Anstatt deinem Webserver weitreichende API-Schreibrechte auf deine primäre PowerDNS-Zone zu gewähren, wird die Validierung auf ein isoliertes System delegiert. Dadurch bleibt dein autoritativer DNS-Server für externe Clients unangreifbar.
sequenceDiagram
participant S as Ziel-Server (Certbot)
participant LE as Let's Encrypt (ACME)
participant PDNS as PowerDNS (Main-Authoritative)
participant ADNS as ACME-DNS (Spezial-Dienst)
Note over S, ADNS: Vorab: CNAME im PowerDNS einmalig angelegt
S->>LE: "Brauche Zertifikat für *.it-virtuoso.de"
LE-->>S: "Hier ist dein Challenge-Token"
S->>ADNS: API-Update: Setze TXT-Record (via REST API)
Note right of ADNS: Token liegt in lokaler acme-dns DB
S->>LE: "Token ist bereit, bitte prüfen!"
LE->>PDNS: DNS-Abfrage: _acme-challenge.it-virtuoso.de
PDNS-->>LE: "Siehe CNAME: xyz.auth.it-virtuoso.de"
LE->>ADNS: DNS-Abfrage: xyz.auth.it-virtuoso.de
ADNS-->>LE: TXT-Record gefunden!
LE-->>S: Validierung erfolgreich & Zertifikat ausgestellt