TLS-Zertifikat prüfen

Wir öffnen eine TLS-Verbindung zur Website, wie es ein Browser tut, und lesen ihr Zertifikat, auch ein defektes. Stimmt etwas nicht, erfahren Sie, mit welchem der üblichen Fehler Sie es zu tun haben.

Oder probieren Sie github.com, expired.badssl.com

Wozu ein Zertifikat da ist

Wenn Ihr Browser sich mit https://example.com verbindet, antwortet irgendetwas. Ob dieses Etwas zu example.com gehört, ist eine andere Frage. Jeder, der im Netz dazwischen sitzt, hätte stattdessen abheben können.

Deshalb muss sich der Server ausweisen. Ein Zertifikat ist eine kleine Datei mit einem öffentlichen Schlüssel, der Liste der Hostnamen, für die dieser Schlüssel sprechen darf, einem Anfangsdatum, einem Enddatum und der Signatur einer Zertifizierungsstelle (CA), die geprüft hat, wer diese Namen kontrolliert. Der Browser geht seine Liste durch. Der Name in der Adressleiste muss im Zertifikat stehen. Das heutige Datum muss zwischen den beiden Daten liegen. Die Signatur muss zu einer Stelle zurückführen, der das Gerät bereits vertraut. Und der Server muss beweisen, dass er den passenden privaten Schlüssel besitzt. Fehlt auch nur einer dieser Punkte, bekommt der Besucher die ganzseitige Warnung.

Die Verschlüsselung beginnt erst, wenn all das stimmt. Das Schloss bedeutet, dass der Server bewiesen hat, wer er ist, und die Verschlüsselung baut auf diesem Beweis auf.

Was die Prüfung testet

Sie verbindet sich zweimal mit Port 443. Beim ersten Mal akzeptiert sie alles, damit sie das Zertifikat lesen kann, egal in welchem Zustand es ist. Beim zweiten Mal prüft sie alles gegen eine Standardliste vertrauenswürdiger Stammzertifikate, wie es ein strenger Client täte.

TestErgebnis
DatenRot, wenn abgelaufen oder noch nicht gültig. Orange bei weniger als 7 verbleibenden Tagen, ein Hinweis unter 21 Tagen, sonst grün.
NamenRot, wenn der eingegebene Hostname nicht abgedeckt ist. Orange, wenn sein Zwilling (mit oder ohne www) im DNS existiert, aber im Zertifikat fehlt.
VertrauenScheitert die Prüfung, erhalten Sie die Ursache: abgelaufen, falscher Name, selbstsigniert, unvollständige Kette oder den rohen Prüffehler.
Reihenfolge der KetteOrange, wenn die gesendeten Zertifikate einander nicht der Reihe nach signieren.
Schlüssel und SignaturRot bei einem RSA-Schlüssel unter 2048 Bit oder einer SHA-1- oder MD5-Signatur.
ProtokollRot, wenn die Verbindung mit etwas Älterem als TLS 1.2 ausgehandelt wird.

Danach ruft sie die vier Formen der Adresse ab (http und https, mit und ohne www) und zeigt, wo jede landet und ob die Website einen HSTS-Header sendet. Wenn Sie diesen Teil Schritt für Schritt sehen möchten, nutzen Sie die Weiterleitungsverfolgung.

Geht in Chrome, scheitert überall sonst

Zertifizierungsstellen signieren Ihr Zertifikat nicht mit ihrem Stammschlüssel. Sie signieren es mit einem Zwischenzertifikat, das wiederum die Stammstelle signiert hat. Geräte speichern nur Stammzertifikate. Ihr Server muss das Zwischenzertifikat also zusammen mit seinem eigenen Zertifikat senden. Beide zusammen bilden die Kette.

Sendet ein Server nur sein eigenes Zertifikat, sind Chrome und Edge auf dem Desktop nachsichtig. Oft laden sie das fehlende Zwischenzertifikat herunter oder verwenden eines, das sie auf einer anderen Website gesehen haben. Firefox mit frischem Profil, ältere Android-Handys, curl, Zahlungs-Webhooks, Mailserver und die meisten Programmbibliotheken tun Ihnen diesen Gefallen nicht. So kommt es zu einer Website, die für ihren Betreiber perfekt aussieht und bei einem API-Client scheitert. Die Prüfung nennt das Unvollständige Kette und meldet es, wenn die Verifizierung scheitert und nur ein einziges Zertifikat gesendet wurde.

Die üblichen Fehler beheben

  • Abgelaufen. Automatische Zertifikate werden etwa 30 Tage vor Ablauf erneuert. Ist Ihres abgelaufen, scheitert die Erneuerung also seit Wochen. Mit Certbot führen Sie certbot renew --dry-run aus und lesen den Fehler. Meist ist es ein verschobener DNS-Eintrag, eine Firewall, die Port 80 schließt, oder eine Weiterleitung, die /.well-known/acme-challenge/ verschluckt.
  • Name nicht abgedeckt. Beantragen Sie das Zertifikat erneut und geben Sie jeden Hostnamen an: certbot -d example.com -d www.example.com. Ein Wildcard-Zertifikat *.example.com deckt eine Ebene von Subdomains ab. example.com selbst deckt es nicht ab, und daran scheitern viele.
  • Unvollständige Kette. Verweisen Sie den Server auf die Datei mit der vollständigen Kette. In nginx: ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;. In Apache ab 2.4.8 nimmt SSLCertificateFile dieselbe Datei.
  • Selbstsigniert. Ersetzen Sie es durch ein Zertifikat einer öffentlichen Zertifizierungsstelle. Let’s Encrypt, ZeroSSL und Google Trust Services stellen sie kostenlos aus.
  • Altes Protokoll. Aktivieren Sie TLS 1.2 und 1.3. In nginx: ssl_protocols TLSv1.2 TLSv1.3;

Dasselbe sehen Sie im Terminal mit openssl s_client -connect example.com:443 -servername example.com.

Die Prüfung spricht mit einer IP-Adresse auf Port 443 und meldet das ausgehandelte Protokoll, nicht jede Version, die der Server akzeptieren würde. Eine auf mehrere Server verteilte Website zeigt unter einer anderen Adresse womöglich ein anderes Zertifikat. Der Widerrufsstatus wird nicht geprüft.

Häufige Fragen

Ist SSL dasselbe wie TLS?

TLS ist der aktuelle Name des Protokolls. SSL war der Vorgänger, dessen letzte Version 2015 ausgemustert wurde. Man sagt aus Gewohnheit noch „SSL-Zertifikat“, aber jedes heute verwendete Zertifikat funktioniert mit TLS.

Wie lange ist ein SSL-Zertifikat gültig?

Zertifikate von Let’s Encrypt gelten 90 Tage. Für alle öffentlichen Zertifizierungsstellen sank das erlaubte Maximum im März 2026 von 398 auf 200 Tage. Im März 2027 fällt es auf 100 Tage und im März 2029 auf 47 Tage. In diesem Tempo ist eine Erneuerung von Hand nicht mehr realistisch.

Mein Zertifikat ist gültig. Warum zeigt der Browser trotzdem „Nicht sicher“?

Meist aus einem von drei Gründen. Die Seite wurde über http:// geöffnet und nichts leitet sie auf HTTPS weiter, das Zertifikat deckt nicht genau den Hostnamen in der Adressleiste ab, oder die Seite lädt Skripte oder Bilder über unverschlüsseltes HTTP. Die Tabelle der Weiterleitungen im Ergebnis zeigt Ihnen den ersten Fall.

Was bedeutet ERR_CERT_COMMON_NAME_INVALID?

Der aufgerufene Hostname steht nicht in der Namensliste des Zertifikats. Das passiert oft bei www, wenn nur die nackte Domain beantragt wurde, oder bei einer neuen Subdomain, der ein Standardzertifikat ausgeliefert wird.

Ist ein kostenloses Zertifikat weniger sicher als ein bezahltes?

Nein. Die Verschlüsselung ist identisch, und Browser behandeln beide gleich. Bezahlt werden Support, eine Garantie oder die Angaben Ihrer Organisation im Zertifikat, und die zeigen Browser nicht mehr hervorgehoben an.

Wie früh sollte ein Zertifikat erneuert werden?

Automatische Clients erneuern, wenn ein Drittel der Laufzeit übrig ist, bei einem 90-Tage-Zertifikat also etwa 30 Tage vor Ablauf. Sind es nur noch 7 Tage, ab denen diese Prüfung warnt, funktioniert die Automatisierung wahrscheinlich nicht mehr.