TLS-Zertifikate: Kette, Ablauf, typische Fehler
Prüfen kannst du jeden Server mit dem SSL/TLS-Check, auch Mailserver per STARTTLS.
Die Zertifikatskette
Ein Browser vertraut einer kleinen Zahl von Wurzelzertifikaten. Dein Server-Zertifikat ist aber von einem Zwischenzertifikat signiert. Damit der Client die Kette prüfen kann, muss der Server ihm sein Zertifikat und alle Zwischenzertifikate schicken, die Wurzel nicht.
Häufigster Fehler: Es wird nur das eigene Zertifikat ausgeliefert. Browser holen das Fehlende manchmal selbst nach, Apps, Skripte und Mailserver nicht. Die Folge: „unable to get local issuer certificate“.
| Software | richtig |
|---|---|
| nginx | ssl_certificate /etc/letsencrypt/live/example.de/fullchain.pem; |
| Apache 2.4.8+ | SSLCertificateFile …/fullchain.pem |
| Postfix | smtpd_tls_chain_files = …/privkey.pem, …/fullchain.pem |
Ablauf und Erneuerung
Zertifikate von Let's Encrypt gelten 90 Tage, künftig noch kürzer. Ohne automatische Erneuerung läuft es garantiert irgendwann ab.
- certbot:
certbot renew --dry-runtestet die Erneuerung. Nach dem Erneuern muss der Dienst neu laden, z. B. mit--deploy-hook "systemctl reload nginx". - Caddy, Traefik erneuern selbst.
- Nicht vergessen: Mailserver, VPN, Proxmox, NAS und alles, was ein Zertifikat per Hand bekommen hat.
Damit es nicht überraschend kommt: Im Monitoring (Premium) eine Zertifikats-Prüfung anlegen, sie warnt 14 Tage vorher.
Typische Fehlermeldungen
| Meldung | Ursache |
|---|---|
Name passt nicht (hostname mismatch) |
Der aufgerufene Name steht nicht in den SANs des Zertifikats. Mit allen Namen neu ausstellen. |
| Zertifikat abgelaufen | Erneuerung läuft nicht oder der Dienst hat das neue Zertifikat nicht geladen |
| selbst signiert | Kein Zertifikat einer öffentlichen Stelle. Für öffentliche Dienste Let's Encrypt nehmen. |
| unvollständige Kette | siehe oben, fullchain statt cert |
Protokolle und HSTS
- TLS 1.2 und 1.3 an, 1.0 und 1.1 aus. Alte Versionen braucht heute kein aktueller Client mehr.
- HSTS (
Strict-Transport-Security: max-age=31536000) sorgt dafür, dass Browser nur noch per HTTPS kommen. Erst setzen, wenn HTTPS überall sicher läuft, auch auf Subdomains, falls duincludeSubDomainsnutzt.
Keine Kommentare vorhanden
Keine Kommentare vorhanden