- Alle Markdown-Dateien (außer README.md) nach docs/ verschoben - Referenzen in README.md aktualisiert - /docs zu .dockerignore hinzugefügt
5.0 KiB
Caddy Zertifikat-Troubleshooting
Problem: Zertifikat für Punycode-Domain (hördle.de / xn--hrdle-jua.de) fehlt
Wenn die Domain hördle.de (xn--hrdle-jua.de) einen ERR_SSL_PROTOCOL_ERROR zeigt, bedeutet das, dass kein gültiges SSL-Zertifikat vorhanden ist.
Schritt 1: Zertifikat-Status prüfen
Führe das Check-Script aus:
./scripts/check-caddy-certificates.sh
Dieses Script prüft:
- Ob Caddy läuft
- Welche Zertifikate vorhanden sind
- Ob die DNS-Einträge korrekt sind
- Ob die HTTPS-Verbindungen funktionieren
Schritt 2: DNS-Einträge prüfen
Wichtig: Beide Domains müssen auf die gleiche Server-IP zeigen!
In GoDaddy prüfen:
-
Gehe zu GoDaddy DNS-Verwaltung
-
Prüfe die A-Records:
Für hoerdle.de:
- Name:
@oderhoerdle.de - Typ:
A - Wert:
DEINE_SERVER_IP
Für hördle.de (Punycode):
- Name:
@oderxn--hrdle-jua.de(oder der Unicode-Name, falls unterstützt) - Typ:
A - Wert: GLEICHE_SERVER_IP wie hoerdle.de
- Name:
DNS manuell testen:
# Prüfe hoerdle.de
dig +short hoerdle.de @8.8.8.8
# Prüfe xn--hrdle-jua.de (Punycode)
dig +short xn--hrdle-jua.de @8.8.8.8
# Beide sollten die gleiche IP zurückgeben!
Schritt 3: Zertifikat neu erstellen
Wenn die DNS-Einträge korrekt sind, lösche das alte (fehlgeschlagene) Zertifikat und lass Caddy es neu erstellen:
./scripts/renew-caddy-certificates.sh
Wähle Option 2: "Nur Zertifikat für xn--hrdle-jua.de löschen"
Schritt 4: Caddy-Logs überwachen
Während Caddy das Zertifikat erstellt, überwache die Logs:
docker logs hoerdle-caddy -f
Du solltest sehen:
[INFO] attempting ACME challenge- Caddy versucht die Challenge[INFO] successfully completed ACME challenge- Challenge erfolgreich[INFO] certificate obtained successfully- Zertifikat erstellt
Bei Fehlern siehst du:
[ERROR] acme: error- Challenge fehlgeschlagen[ERROR] unable to validate- Validierung fehlgeschlagen
Schritt 5: Häufige Probleme und Lösungen
Problem 1: DNS zeigt auf falsche IP
Symptom: dig zeigt eine andere IP als erwartet
Lösung:
- Prüfe DNS-Einträge in GoDaddy
- Warte auf DNS-Propagierung (kann 5-60 Minuten dauern)
- Verwende einen DNS-Checker: https://www.whatsmydns.net/
Problem 2: Port 80 nicht erreichbar
Symptom: Caddy-Logs zeigen "connection refused" oder Timeout
Lösung:
- Prüfe Firewall:
sudo ufw status - Prüfe ob Port 80 offen ist:
sudo netstat -tulpn | grep :80 - Prüfe ob Caddy auf Port 80 lauscht:
docker exec hoerdle-caddy netstat -tulpn | grep :80
Problem 3: Let's Encrypt Rate Limit
Symptom: Logs zeigen "too many certificates already issued"
Lösung:
- Warte 1 Woche (Rate Limit von Let's Encrypt)
- Oder verwende Staging-Environment zum Testen:
tls { staging }
Problem 4: Punycode-Domain wird nicht erkannt
Symptom: Caddy erstellt Zertifikat nur für hoerdle.de, nicht für xn--hrdle-jua.de
Lösung:
- Prüfe ob beide Domains in der Caddyfile stehen
- Prüfe DNS-Einträge (siehe Schritt 2)
- Erzwinge Zertifikat-Erstellung (siehe Schritt 3)
Manuelle Zertifikat-Löschung
Falls das Script nicht funktioniert, kannst du Zertifikate manuell löschen:
# Alle Zertifikate löschen
docker exec hoerdle-caddy rm -rf /data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/*
# Nur Punycode-Zertifikat löschen (manuell)
docker exec hoerdle-caddy find /data/caddy/certificates -name "*xn--*" -delete
# Container neu starten
docker compose -f docker-compose.caddy.yml --profile production restart caddy
DNS-Propagierung prüfen
Nach DNS-Änderungen kann es bis zu 60 Minuten dauern, bis alle DNS-Server aktualisiert sind:
# Prüfe DNS-Propagierung weltweit
curl "https://dnschecker.org/#A/hoerdle.de"
curl "https://dnschecker.org/#A/xn--hrdle-jua.de"
Test-Zertifikat erstellen (Staging)
Zum Testen ohne Rate-Limits kannst du ein Staging-Zertifikat erstellen:
- Temporär Caddyfile ändern (in beiden Domain-Blocks):
tls {
staging
}
- Container neu starten
- Zertifikat erstellen lassen
- Zurück zu Produktion ändern (Staging-Block entfernen)
- Erneut Container neu starten
Verifizieren, dass es funktioniert
Nach erfolgreicher Zertifikats-Erstellung:
# Teste HTTPS-Verbindung
curl -I https://hoerdle.de
curl -I https://xn--hrdle-jua.de
# Prüfe Zertifikat-Details
echo | openssl s_client -connect hoerdle.de:443 -servername hoerdle.de 2>/dev/null | openssl x509 -noout -subject -dates
echo | openssl s_client -connect xn--hrdle-jua.de:443 -servername xn--hrdle-jua.de 2>/dev/null | openssl x509 -noout -subject -dates
Support
Falls das Problem weiterhin besteht:
- Prüfe Caddy-Logs:
docker logs hoerdle-caddy - Prüfe DNS:
dig +short xn--hrdle-jua.de @8.8.8.8 - Prüfe Firewall:
sudo ufw status - Prüfe Port-Zugriff:
curl -I http://hoerdle.de