Caddy, wenn als Reverse Proxy konfiguriert, stellt automatisch TLS-Zertifikate für Ihre Domains über ACME-Anbieter wie Let's Encrypt oder ZeroSSL bereit, erneuert und verwaltet diese, wodurch HTTPS standardmäßig ohne manuelles Eingreifen aktiviert wird. Diese Funktion vereinfacht die Bereitstellung sicherer Webserver, indem sie die Notwendigkeit manueller Zertifikatsverwaltungsaufgaben eliminiert.
Caddys automatisches HTTPS verstehen
Caddys primäres Alleinstellungsmerkmal ist sein Zero-Configuration-Ansatz für HTTPS. Wenn Caddy eine Anfrage für eine Domain erhält, versucht es, ein TLS-Zertifikat für diese Domain zu erhalten, falls noch keines existiert und nicht explizit konfiguriert ist. Dieser Prozess nutzt das Automatic Certificate Management Environment (ACME)-Protokoll.
Wie ACME und Caddy interagieren
- Domain-Auflösung: Caddy identifiziert den Domainnamen, der mit der eingehenden Anfrage verbunden ist.
- Zertifikatsprüfung: Es prüft seinen lokalen Speicher auf ein vorhandenes, gültiges Zertifikat für diese Domain.
- ACME-Challenge: Wenn kein gültiges Zertifikat gefunden wird, initiiert Caddy eine ACME-Challenge mit einem konfigurierten ACME-Anbieter (standardmäßig Let's Encrypt, mit ZeroSSL als Fallback). Die häufigsten Challenge-Typen sind HTTP-01 und DNS-01.
- HTTP-01-Challenge: Caddy erstellt eine temporäre Datei unter einem bestimmten Pfad (
/.well-known/acme-challenge/) auf dem Server. Der ACME-Anbieter versucht dann, auf diese Datei über HTTP auf Port 80 zuzugreifen, um den Domainbesitz zu überprüfen. Dies erfordert, dass Caddy auf Port 80 öffentlich zugänglich ist. - DNS-01-Challenge: Caddy weist den ACME-Anbieter an, den Domainbesitz zu überprüfen, indem er nach einem bestimmten TXT-Eintrag in der DNS-Zone der Domain sucht. Diese Methode ist für Wildcard-Zertifikate erforderlich und kann verwendet werden, wenn Port 80 nicht verfügbar ist. Sie erfordert, dass Caddy über Anmeldeinformationen für einen unterstützten DNS-Anbieter verfügt.
- HTTP-01-Challenge: Caddy erstellt eine temporäre Datei unter einem bestimmten Pfad (
- Zertifikatsausstellung: Nach erfolgreichem Abschluss der Challenge stellt der ACME-Anbieter ein TLS-Zertifikat für die Domain aus.
- Zertifikatsspeicherung: Caddy speichert das Zertifikat und seinen privaten Schlüssel sicher auf der Festplatte.
- Automatische Erneuerung: Caddy überwacht die Ablaufdaten von Zertifikaten und erneuert sie automatisch rechtzeitig (typischerweise 30 Tage vor Ablauf) unter Verwendung desselben ACME-Challenge-Prozesses.
- OCSP Stapling: Caddy ruft auch automatisch OCSP-Antworten ab und heftet sie an Zertifikate an, was die Client-Leistung und den Datenschutz verbessert, indem es Clients ermöglicht, den Zertifikatswiderrufsstatus zu überprüfen, ohne die Zertifizierungsstelle direkt zu kontaktieren.
Grundlegende Reverse-Proxy-Konfiguration mit automatischem HTTPS
Eine minimale Caddyfile-Konfiguration für einen Reverse Proxy aktiviert implizit automatisches HTTPS.
Einfaches Reverse-Proxy-Beispiel
yourdomain.com {
reverse_proxy localhost:8080
}
In diesem Beispiel:
* yourdomain.com: Dies ist das Site-Label. Caddy wird Anfragen an diese Domain sowohl auf Port 80 (für HTTP-Weiterleitungen und ACME-Challenges) als auch auf Port 443 (für HTTPS) abhören.
* reverse_proxy localhost:8080: Diese Direktive leitet alle eingehenden Anfragen für yourdomain.com an eine Upstream-Anwendung weiter, die auf localhost auf Port 8080 läuft.
Wenn Caddy mit dieser Konfiguration startet, führt es die folgenden Schritte automatisch aus:
1. Versucht, ein TLS-Zertifikat für yourdomain.com von einem ACME-Anbieter zu erhalten.
2. Richtet HTTP-zu-HTTPS-Weiterleitungen für den gesamten Datenverkehr auf Port 80 ein.
3. Stellt yourdomain.com über HTTPS mit dem erhaltenen Zertifikat bereit.
Caddy ausführen
Um Caddy mit dieser Konfiguration auszuführen:
- Speichern Sie den obigen Inhalt als
Caddyfilein Ihrem gewünschten Verzeichnis. - Navigieren Sie in Ihrem Terminal zu diesem Verzeichnis.
- Führen Sie aus:
caddy run
Für Produktionsumgebungen wird empfohlen, Caddy als systemd-Dienst oder innerhalb eines Docker-Containers auszuführen.
Erweiterte HTTPS-Konfigurationen
Benutzerdefinierte Zertifikate
Wenn Sie bereits vorhandene TLS-Zertifikate haben (z. B. von einer Unternehmens-CA oder manuell erhaltene Wildcard-Zertifikate), kann Caddy so konfiguriert werden, dass es diese anstelle der automatischen Bereitstellung verwendet.
yourdomain.com {
tls /path/to/your/cert.pem /path/to/your/key.pem
reverse_proxy localhost:8080
}
tls /path/to/your/cert.pem /path/to/your/key.pem: Gibt die vollständige Kette der Zertifikatsdatei und die private Schlüsseldatei an. Caddy wird diese Dateien verwenden und nicht versuchen, ein Zertifikat füryourdomain.combereitzustellen.
Wildcard-Zertifikate mit DNS-01-Challenge
Wildcard-Zertifikate (*.yourdomain.com) erfordern die DNS-01 ACME-Challenge, da die HTTP-01-Challenge den Besitz für beliebige Subdomains nicht nachweisen kann. Dies erfordert die Konfiguration von Caddy mit Anmeldeinformationen für Ihren DNS-Anbieter.
*.yourdomain.com {
tls {
dns cloudflare {
api_token "YOUR_CLOUDFLARE_API_TOKEN"
}
}
reverse_proxy localhost:8080
}
tls { dns cloudflare { ... } }: Dieser Block weist Caddy an, die DNS-01-Challenge mit dem Cloudflare DNS-Anbieter zu verwenden.- `api_token "