Der Browser akzeptiert das Zertifikat Ihrer Website nicht

Worum es geht

Der Server antwortet auf Port 443, aber das Zertifikat, das er uns geliefert hat, würde ein Browser nicht akzeptieren. Wir haben es so geprüft wie ein Browser, nur von außen. Sonst haben wir an Ihrer Website nichts getestet.

Nach dem, was wir gesehen haben, handelt es sich um einen dieser Fälle:

Warum das ein Problem ist

Besucher sehen meist eine ganzseitige Warnung, und die meisten schließen den Tab, wie bei einem abgelaufenen Zertifikat. Ein fehlendes Zwischenzertifikat ist der mildere Fall: Viele Browser laden es selbst nach, andere Clients scheitern aber (siehe unten).

Wie Sie es beheben

Zuerst prüfen, was der Server sendet

openssl s_client -connect example.cz:443 -servername example.cz </dev/null 2>/dev/null |
  openssl x509 -noout -subject -issuer -dates -ext subjectAltName

Die Ausgabe zeigt den Aussteller (issuer), die Gültigkeit und die Namen in subjectAltName. Daran erkennen Sie, welcher Fall vorliegt.

Selbstsigniert, unbekannte Stelle, falscher Name, schwacher Schlüssel

Alles löst ein neues Zertifikat einer öffentlichen Zertifizierungsstelle, das die Domain und die Variante mit www abdeckt. Let’s Encrypt ist kostenlos und stellt moderne Schlüssel aus:

sudo certbot --nginx -d example.cz -d www.example.cz

Zwischenzertifikat fehlt

Der Server muss die ganze Kette senden, nicht nur sein eigenes Zertifikat. Viele Desktop-Browser überdecken die Lücke, indem sie das fehlende Zertifikat selbst nachladen (per AIA), sodass die Website bei Ihnen funktionieren kann. Manche Clients, etwa API-Clients, Skripte, Zahlungs-Gateways und ältere Android-Versionen, tun das nicht und lehnen die Verbindung ab. Bei nginx verwenden Sie fullchain.pem, nicht cert.pem:

ssl_certificate     /etc/letsencrypt/live/example.cz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.cz/privkey.pem;

Bei Apache gehört fullchain.pem in SSLCertificateFile.

Noch nicht gültig

Meist war die Uhr auf dem Rechner falsch, der das Zertifikat ausgestellt hat. Prüfen Sie date und die Zeitsynchronisation (NTP) und stellen Sie das Zertifikat dann neu aus.

Shared Hosting

Suchen Sie im Kundenbereich den Abschnitt SSL oder HTTPS und fügen Sie ein Zertifikat für Ihre Domain hinzu. Bleibt das Standardzertifikat des Hosters bestehen, wenden Sie sich an den Support.

Referenzen