Was ist die SSL-Zertifikatskette (Certificate Chain)?
SSL-Sicherheit beruht auf einer Vertrauenskette (Chain of Trust). Jedes SSL-Zertifikat wird durch die Signatur einer übergeordneten Instanz vertrauenswürdig:
Root-CA-Zertifikat → Zwischenzertifikat(e) (Intermediate) → Website-Zertifikat
Browser vertrauen von Haus aus nur den Root-CA-Zertifikaten. Jedes Glied der Kette vom Website-Zertifikat bis zum Root muss überprüfbar sein. Fehlt ein Glied oder ist es fehlerhaft, entsteht ein Fehler in der Zertifikatskette.
Häufige Fehler in der Zertifikatskette
1. Incomplete Chain (unvollständige Kette)
Der häufigste Kettenfehler. Auf dem Server ist nur das Website-Zertifikat installiert, das oder die Zwischenzertifikate fehlen.
Symptome
- Funktioniert in Chrome, aber Firefox meldet einen Fehler (Chrome kann das fehlende Zertifikat dank AIA-Unterstützung nachladen, Firefox nicht)
- Funktioniert am Desktop, aber auf Mobilgeräten erscheint ein Fehler
- Der SSL-Labs-Test zeigt „Chain issues: Incomplete“
Lösung
# Zwischenzertifikat herunterladen und Fullchain erstellen
cat your_domain.crt intermediate.crt > fullchain.pem
# Nginx
ssl_certificate /etc/ssl/fullchain.pem;
ssl_certificate_key /etc/ssl/private.key;
# Apache
SSLCertificateFile /etc/ssl/your_domain.crt
SSLCertificateChainFile /etc/ssl/intermediate.crt
2. Wrong Order (falsche Reihenfolge)
Werden die Zertifikatsdateien in der falschen Reihenfolge zusammengefügt, kommt es auf manchen Plattformen zu Problemen.
Richtige Reihenfolge
- Website-Zertifikat (Leaf / End-Entity)
- Zwischenzertifikat 1 (das das Website-Zertifikat signiert hat)
- Zwischenzertifikat 2 (falls vorhanden — das Zwischenzertifikat 1 signiert hat)
- Das Root-Zertifikat wird nicht hinzugefügt (im Browser bereits enthalten)
# Reihenfolge prüfen
openssl s_client -connect domain.com:443 -showcerts 2>/dev/null | grep "s:" | head -10
# Reihenfolge in der Ausgabe:
# s:CN = yourdomain.com (site cert)
# s:CN = Sectigo RSA Domain Validation Secure Server CA (intermediate)
# ...muss in der richtigen Reihenfolge stehen
3. Expired Intermediate (abgelaufenes Zwischenzertifikat)
Auch wenn Ihr Website-Zertifikat gültig ist, kann das Zwischenzertifikat abgelaufen sein. In diesem Fall lässt sich die Kette nicht verifizieren.
Lösung
# Datum des Zwischenzertifikats prüfen
openssl x509 -in intermediate.crt -noout -dates
# Falls abgelaufen: aktuelles Zwischenzertifikat bei Ihrer CA herunterladen
# Sectigo: https://support.sectigo.com/articles/Knowledge/Sectigo-Intermediate-Certificates
# DigiCert: https://www.digicert.com/kb/digicert-root-certificates.htm
4. Probleme mit Cross-Signed Chains
Manche CAs (insbesondere Let's Encrypt) verwenden für die Kompatibilität mit älteren Geräten eine cross-signierte Kette. Beim Umstieg auf ein neues Root kann es zu Inkompatibilitäten kommen.
Beispiel Let's Encrypt
- Lange Kette: DST Root CA X3 → ISRG Root X1 → Zwischenzertifikat → Site Cert (Cross-Sign zur Unterstützung älterer Android-Geräte; diese Cross-Signatur ist 2024 abgelaufen und wird nicht mehr verwendet)
- Kurze Kette: ISRG Root X1 → Zwischenzertifikat → Site Cert (die heute verwendete Kette)
- Certbot wählt standardmäßig die richtige Kette; bietet die CA mehrere Ketten an, lässt sich mit
--preferred-chaineine bevorzugte festlegen
Werkzeuge zum Testen der Zertifikatskette
| Werkzeug | Funktion | Zugang |
|---|---|---|
| SSL Labs | Umfassende Kettenanalyse, Bericht zu Chain Issues | ssllabs.com/ssltest |
| DATASSL SSL Checker | Schnelle Prüfung der Zertifikatskette | datassl.com/ssl-checker |
| whatsmychaincert.com | Erkennt fehlende Zwischenzertifikate automatisch und erstellt das Bundle | whatsmychaincert.com |
| OpenSSL CLI | Detaillierte Untersuchung der Zertifikatskette | Kommandozeile |
Befehle zur Überprüfung der Zertifikatskette
# Alle vom Server ausgelieferten Zertifikate anzeigen
openssl s_client -connect domain.com:443 -showcerts
# Angaben zu jedem Zertifikat der Kette
openssl s_client -connect domain.com:443 -showcerts 2>/dev/null | \
awk '/BEGIN/{cert=""} {cert=cert$0"\n"} /END/{print cert | "openssl x509 -noout -subject -issuer -dates"}'
# Kette verifizieren
openssl verify -CAfile ca-bundle.crt -untrusted intermediate.crt site.crt
Fazit
Fehler in der Zertifikatskette gehören zu den häufigsten Ursachen für SSL-Probleme. Die richtigen Zwischenzertifikate in der richtigen Reihenfolge zu installieren — ein so einfacher Schritt — behebt die große Mehrzahl der Probleme. Mit whatsmychaincert.com erkennen Sie fehlende Zertifikate automatisch, mit SSL Labs überprüfen Sie Ihre Konfiguration.