TLS für Caddy konfigurieren
Schritt-für-Schritt-Anleitung: Auto-HTTPS mit Let's Encrypt, manuelle TLS-Konfiguration, eigene Zertifikate und Cipher Suites im tls-Block — Caddy macht HTTPS zum Standard.
Caddy — HTTPS als Standard, nicht als Option
Caddy ist der einzige Webserver, der HTTPS vollständig automatisiert: Zertifikatsbeantragung, Erneuerung, TLS-Konfiguration und HTTP-zu-HTTPS-Redirect sind ohne manuelle Eingriffe aktiv. Für die meisten Anwendungsfälle reicht ein Domainname im Caddyfile — Caddy erledigt den Rest.
Diese Anleitung erklärt Auto-HTTPS, zeigt die manuelle TLS-Konfiguration für erweiterte Anforderungen und erklärt, wann eigene Zertifikate sinnvoll sind. Caddy 2.10+ unterstützt Post-Quantum-Handshakes (X25519MLKEM768) standardmäßig — keine Konfiguration nötig.
Auto-HTTPS — der Standard in Caddy
Caddy erkennt öffentliche Domainnamen und aktiviert automatisch HTTPS mit Let's Encrypt. Kein tls-Block nötig, kein Certbot, kein Cron-Job für Erneuerung. TLS 1.2 als Minimum, TLS 1.3 aktiviert, HSTS-Header gesetzt — alles out of the box.
# /etc/caddy/Caddyfile — Auto-HTTPS (Default)
# Caddy erkennt öffentliche Domains und aktiviert HTTPS automatisch
ihre-domain.de {
# Das ist alles, was Caddy braucht:
# ✓ TLS 1.2/1.3 aktiviert
# ✓ Let's Encrypt Zertifikat automatisch
# ✓ HTTP → HTTPS Redirect automatisch
# ✓ Automatische Erneuerung
# ✓ HSTS-Header gesetzt
reverse_proxy localhost:3000
}
# Mehrere Domains:
# www.ihre-domain.de, api.ihre-domain.de {
# reverse_proxy localhost:3000
# } Let's Encrypt ACME HTTP-01-Challenge erfordert, dass Port 80 öffentlich erreichbar ist. Caddy öffnet Port 80 für den Challenge-Endpunkt und leitet danach alle HTTP-Anfragen auf HTTPS um. Stellen Sie sicher, dass Ihre Firewall Port 80 und 443 freigibt.
Manuelle TLS-Konfiguration mit tls-Block
Für Compliance-Anforderungen oder spezifische Cipher-Suite-Vorgaben können Sie TLS im tls-Block explizit konfigurieren. Caddy's Defaults sind bereits sicher — dieser Block ist nur für erweiterte Anforderungen (PCI DSS, BSI TR-02102-2) nötig.
# Manuelle TLS-Konfiguration (über Defaults hinaus)
ihre-domain.de {
tls {
# Minimum TLS Version (Default: TLS 1.2)
protocols tls1.2 tls1.3
# Cipher Suites für TLS 1.2 (TLS 1.3 verwendet eigene)
ciphers TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 \
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 \
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 \
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
# ECDH-Kurven (X25519 für Post-Quantum-Vorbereitung)
curves x25519 p256 p384
# ACME E-Mail (für Let's Encrypt Benachrichtigungen)
issuer acme {
email admin@ihre-domain.de
}
}
reverse_proxy localhost:3000
} caddy version. Eigene Zertifikate einbinden
Wenn Sie Zertifikate von einer eigenen CA, DigiCert oder Sectigo verwenden, können Sie diese direkt im Caddyfile referenzieren. Caddy übernimmt dann Reload und Bereitstellung — die automatische Erneuerung müssen Sie extern organisieren.
# Eigene Zertifikate statt Let's Encrypt
ihre-domain.de {
tls /etc/ssl/ihre-domain.de/cert.pem \
/etc/ssl/ihre-domain.de/key.pem
# Oder mit explizitem tls-Block für weitere Optionen:
# tls /pfad/fullchain.pem /pfad/privkey.pem {
# protocols tls1.2 tls1.3
# }
reverse_proxy localhost:3000
}
# Caddy-Dienst neu laden (kein Downtime)
# sudo systemctl reload caddy
# oder: caddy reload --config /etc/caddy/Caddyfile sudo systemctl reload caddy ausführen. Ab 2029 beträgt die maximale Gültigkeit 47 Tage — planen Sie die Automatisierung jetzt. Konfiguration verifizieren
Prüfen Sie erst die Caddyfile-Syntax, dann die laufende TLS-Konfiguration mit openssl s_client. caddy certificates zeigt alle verwalteten Zertifikate und ihre Ablaufdaten.
# 1. Caddyfile-Syntax prüfen
caddy validate --config /etc/caddy/Caddyfile
# 2. Caddy neu laden (Zero-Downtime)
sudo systemctl reload caddy
# 3. TLS 1.3 prüfen
openssl s_client -connect ihre-domain.de:443 -tls1_3 2>&1 | grep -E "Protocol|Cipher"
# Erwartete Ausgabe:
# Protocol : TLSv1.3
# Cipher : TLS_AES_256_GCM_SHA384
# 4. TLS 1.0/1.1 muss abgelehnt werden
openssl s_client -connect ihre-domain.de:443 -tls1 2>&1 | grep "alert"
# Erwartete Ausgabe: alert handshake failure
# 5. Zertifikats-Info anzeigen
caddy certificates Der Scanner prüft TLS-Version, Cipher Suites und Zertifikatskette als Teil der 166 Prüfpunkte — mit konkreten Empfehlungen und Scoring nach Note A+ bis F.
Wie steht Ihre Domain bei TLS-Konfiguration?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.
Häufig gestellte Fragen
Was genau macht Caddy Auto-HTTPS automatisch?
Caddy erkennt öffentliche Domainnamen im Caddyfile und aktiviert automatisch: HTTPS-Listener auf Port 443, HTTP-zu-HTTPS-Redirect auf Port 80, Let's Encrypt Zertifikatsbeantragung via ACME, automatische Zertifikatserneuerung, TLS 1.2+ als Minimum, sichere Cipher Suites und HSTS-Header. Alles ohne manuelle Konfiguration — der Caddyfile braucht nur den Domainnamen.
Unterstützt Caddy TLS 1.3 und Post-Quantum?
Ja. Caddy aktiviert TLS 1.3 standardmäßig und unterstützt ab Caddy 2.10 mit Go 1.23+ hybride Post-Quantum-Handshakes (X25519MLKEM768) — dieselbe Implementierung, die Google Chrome und Firefox nutzen. Kein zusätzlicher Konfigurationsaufwand nötig.
Brauche ich Certbot bei Caddy?
Nein. Caddy hat eine eingebaute ACME-Client-Implementierung und kommuniziert direkt mit Let's Encrypt (und anderen ACME CAs). Certbot ist ein externes Tool für andere Webserver. Bei Caddy ist Certbot überflüssig und kann sogar zu Konflikten führen, wenn beide dasselbe Zertifikatsverzeichnis verwenden.
Wie konfiguriere ich TLS für interne Domains ohne öffentliches DNS?
Für interne Domains (.local, .internal) erkennt Caddy, dass Let's Encrypt nicht verfügbar ist, und erstellt automatisch eine interne CA mit lokal signierten Zertifikaten. Diese CA wird im lokalen Trust Store registriert (mit caddy trust). Für produktive interne Domains empfehlen wir eigene Zertifikate via tls /pfad/cert.pem /pfad/key.pem.
Was ist der Unterschied zwischen Caddyfile und JSON-Config bei TLS?
Das Caddyfile ist die empfohlene, menschenlesbare Konfigurationsform. Die JSON-API ermöglicht dynamische Konfigurationsänderungen ohne Reload und ist besonders für programmatische Verwaltung von Zertifikaten relevant. Für Standard-TLS-Konfiguration ist das Caddyfile vollständig ausreichend.
Kann Caddy mehrere Domains mit unterschiedlichen Zertifikaten verwalten?
Ja. Caddy unterstützt SNI (Server Name Indication) und verwaltet für jede Domain automatisch ein eigenes Zertifikat. Verschiedene Domains können verschiedene tls-Blöcke haben — verschiedene CAs, verschiedene Zertifikatspfade oder verschiedene Cipher-Konfigurationen.
Wie teste ich die Caddy TLS-Konfiguration?
Nutzen Sie caddy validate --config /etc/caddy/Caddyfile für Syntaxprüfung, openssl s_client -connect ihre-domain.de:443 -tls1_3 für den TLS-1.3-Test und den Wolf-Agents Web Security Check für ein vollständiges Audit inklusive Cipher Suites, HSTS und Zertifikatskette.