Kurz gesagt
HTTP-01 ist der einfache Standard für öffentlich erreichbare Webserver mit offenem Port 80. DNS-01 brauchen Sie für Wildcard-Zertifikate, interne Hosts ohne öffentlichen Webzugang und Setups mit mehreren Servern hinter einem Load Balancer.
| Kriterium | HTTP-01 | DNS-01 |
|---|---|---|
| Nachweis über | Datei unter /.well-known/acme-challenge/ per HTTP | TXT-Eintrag _acme-challenge.<domain> |
| Wildcard-Zertifikate | Nicht möglich | Möglich, nur über DNS-01 |
| Voraussetzung | Port 80 aus dem Internet erreichbar, A/AAAA zeigen auf den Server | Schreibzugriff auf die DNS-Zone, meist per API |
| Interne Hosts | Nur wenn sie öffentlich auf Port 80 erreichbar sind | Ja, der Host selbst muss nicht erreichbar sein |
| Mehrere Server / Load Balancer | Challenge muss auf jedem Backend liegen oder zentral beantwortet werden | Unabhängig davon, wo die Anfrage landet |
| Tempo | Sofort, sobald die Datei abrufbar ist | Abhängig von DNS-API und Verteilung auf die autoritativen Server |
| Sicherheitsrisiko | Gering, nur der Webserver ist beteiligt | DNS-API-Schlüssel auf dem Server kann oft die ganze Zone ändern |
| Typische Fehlerquelle | Falscher AAAA-Eintrag, Redirects, Firewall, CDN davor | Fehlende API-Rechte, zu kurze Wartezeit, mehrere Nameserver nicht synchron |
HTTP-01 passt, wenn …
- der Server öffentlich erreichbar ist und Port 80 offen bleiben darf.
- Sie Zertifikate für einzelne, feste Hostnamen brauchen.
- kein DNS-API-Zugang vorhanden ist oder Sie ihn nicht auf Server verteilen wollen.
- der Webserver oder Reverse Proxy ACME bereits eingebaut hat, etwa Caddy oder Traefik.
DNS-01 passt, wenn …
- Sie ein Wildcard-Zertifikat wie
*.example.combenötigen. - der Host intern ist, etwa ein Mailserver, ein Admin-Interface oder ein Labor-System.
- Port 80 aus Sicherheitsgründen geschlossen bleiben muss.
- mehrere Server hinter einem Load Balancer dasselbe Zertifikat nutzen.
Stolpersteine aus dem Betrieb
- Let's Encrypt prüft bei HTTP-01 auch per IPv6. Ein veralteter AAAA-Eintrag auf einen anderen Host lässt die Validierung scheitern, obwohl IPv4 stimmt.
- Ein globaler HTTP-zu-HTTPS-Redirect ist in Ordnung, ein Redirect auf einen anderen Host oder eine Login-Seite für
/.well-known/nicht. - DNS-01: API-Token möglichst nur auf die Zone oder den Eintrag beschränken. Alternativ
_acme-challengeper CNAME in eine eigene Validierungszone delegieren. - Nach dem Erneuern den Dienst neu laden. Viele abgelaufene Zertifikate waren längst erneuert, nur nginx oder Postfix nutzten noch das alte.
Häufige Fragen
Kann ich HTTP-01 und DNS-01 mischen?
Ja, pro Zertifikatsanfrage können Namen unterschiedlich validiert werden, und verschiedene Zertifikate auf demselben Server können unterschiedliche Challenges nutzen. Für die Wartung ist ein einheitliches Verfahren pro Server aber übersichtlicher.
Warum dauert DNS-01 manchmal so lange?
Der TXT-Eintrag muss auf allen autoritativen Nameservern der Zone sichtbar sein, bevor Let's Encrypt prüft. Viele Clients warten deshalb eine feste Zeit. Ist sie zu kurz, schlägt die Validierung fehl.