tls.cert.invalid_chain

Zertifikatskette ungültig

Was wir prüfen

Wir validieren die vollständige Zertifikatskette vom Blattzertifikat über alle Zwischenzertifikate bis zu einer vertrauenswürdigen Root-CA. Die Kette muss vollständig sein, korrekt geordnet und bei einer Root enden, die unser Trust-Store anerkennt.

Die Kettenvalidierung ist unabhängig vom Hostname-Abgleich — ein Zertifikat kann eine gültige Kette haben und trotzdem an der Hostname-Prüfung scheitern, und umgekehrt.

Was dieses Ergebnis bedeutet

Die präsentierte Zertifikatskette ließ sich nicht validieren. Häufige Ursachen:

Warum das wichtig ist

So behebst du das

  1. Finde heraus, was fehlt. Prüfe die aktuelle Kette:

    openssl s_client -starttls smtp -connect mail.example.com:25 \
        -servername mail.example.com -showcerts 2>/dev/null | \
        grep -E 'subject=|issuer='
    

    Der Aussteller jedes Zertifikats muss zum Inhaber des nächsten passen. Eine Lücke heißt: Zwischenzertifikat fehlt.

  2. Besorge die vollständige Kette. Die CA liefert die Zwischenzertifikate mit. Bei Let's Encrypt legt certbot die komplette Kette in fullchain.pem ab — genau diese Datei gehört in die Konfiguration, nicht cert.pem (nur Blattzertifikat).

  3. Konfiguriere den Server auf die vollständige Kette. Für Postfix:

    # /etc/postfix/main.cf — fullchain verwenden, nicht nur das Blattzertifikat
    smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
    smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem
    
  4. Neu laden und prüfen:

    systemctl reload postfix
    openssl s_client -starttls smtp -connect mail.example.com:25 \
        -servername mail.example.com 2>/dev/null
    

    In der Ausgabe muss Verify return code: 0 (ok) stehen.

So fließt es in die Bewertung ein

Eine ungültige Zertifikatskette kostet 25 Punkte und löst ein sofortiges F in der TLS-Kategorie aus. Das vollständige Scoring-Modell steht in der Bewertungsmethodik.

Evidenzbeispiel

$ openssl s_client -starttls smtp -connect mail.example.com:25 \
    -servername mail.example.com 2>/dev/null
...
verify error:num=20:unable to get local issuer certificate
Verify return code: 21 (unable to verify the first certificate)

Referenzen