# 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: ```bash ./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: 1. Gehe zu [GoDaddy DNS-Verwaltung](https://dcc.godaddy.com/manage/hoerdle.de/dns) 2. Prüfe die A-Records: **Für hoerdle.de:** - Name: `@` oder `hoerdle.de` - Typ: `A` - Wert: `DEINE_SERVER_IP` **Für hördle.de (Punycode):** - Name: `@` oder `xn--hrdle-jua.de` (oder der Unicode-Name, falls unterstützt) - Typ: `A` - Wert: **GLEICHE_SERVER_IP wie hoerdle.de** #### DNS manuell testen: ```bash # 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: ```bash ./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: ```bash 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**: 1. Prüfe DNS-Einträge in GoDaddy 2. Warte auf DNS-Propagierung (kann 5-60 Minuten dauern) 3. Verwende einen DNS-Checker: https://www.whatsmydns.net/ #### Problem 2: Port 80 nicht erreichbar **Symptom**: Caddy-Logs zeigen "connection refused" oder Timeout **Lösung**: 1. Prüfe Firewall: `sudo ufw status` 2. Prüfe ob Port 80 offen ist: `sudo netstat -tulpn | grep :80` 3. 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: ```caddyfile 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**: 1. Prüfe ob beide Domains in der Caddyfile stehen 2. Prüfe DNS-Einträge (siehe Schritt 2) 3. Erzwinge Zertifikat-Erstellung (siehe Schritt 3) ### Manuelle Zertifikat-Löschung Falls das Script nicht funktioniert, kannst du Zertifikate manuell löschen: ```bash # 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: ```bash # 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: 1. Temporär Caddyfile ändern (in beiden Domain-Blocks): ```caddyfile tls { staging } ``` 2. Container neu starten 3. Zertifikat erstellen lassen 4. Zurück zu Produktion ändern (Staging-Block entfernen) 5. Erneut Container neu starten ### Verifizieren, dass es funktioniert Nach erfolgreicher Zertifikats-Erstellung: ```bash # 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: 1. Prüfe Caddy-Logs: `docker logs hoerdle-caddy` 2. Prüfe DNS: `dig +short xn--hrdle-jua.de @8.8.8.8` 3. Prüfe Firewall: `sudo ufw status` 4. Prüfe Port-Zugriff: `curl -I http://hoerdle.de`