Fehlermeldung
net::ERR_CERT_COMMON_NAME_INVALID
Die Warnseite zeigt „NET::ERR_CERT_COMMON_NAME_INVALID“; Automatisierungstools geben „net::ERR_CERT_COMMON_NAME_INVALID“ aus.
Chrome, Edge and other Chromium browsers — the certificate does not cover the host name in the address bar
Was der Fehler bedeutet
Das Zertifikat ist vertrauenswürdig und zeitlich gültig, aber der Hostname in der Adressleiste gehört nicht zu seinen Subject Alternative Names. Anders als der Fehlername vermuten lässt, nutzt Chrome den Common Name überhaupt nicht (seit Chrome 58); das Zertifikat muss den Host in subjectAltName aufführen. Typisch: www vs. Domain ohne www, eine neue Subdomain oder ein Wildcard-Zertifikat, das eine Ebene zu tief verwendet wird.
Warum der Fehler auftritt
Das Zertifikat führt diesen Host nicht auf
häufigEine Subdomain oder ein Alias wurde im DNS hinzugefügt, ohne das Zertifikat neu auszustellen.
Ein Wildcard-Zertifikat wird für zwei Ebenen verwendet
häufig*.example.com deckt shop.example.com ab, aber nicht eu.shop.example.com (wie bei wrong.host.badssl.com in der Reproduktion).
www und die Domain ohne www
häufigEin Zertifikat für www.example.com deckt example.com nicht ab und umgekehrt; beide müssen aufgeführt sein.
Der Name steht nur im Common Name
gelegentlichZertifikate ohne subjectAltName (aus alten internen Tools) scheitern in Chrome, auch wenn der CN passt.
So behebst du den Fehler
- 1.
SAN-Liste mit der Adresse vergleichen
Der fehlende Name ist der, den du hinzufügen musst.
bash echo | openssl s_client -connect www.example.com:443 -servername www.example.com 2>/dev/null \ | openssl x509 -noout -ext subjectAltName - 2.
Zertifikat für alle Hostnamen der Website neu ausstellen
Nimm Apex-Domain, www und alle Subdomains auf (oder einen Wildcard-Eintrag pro Ebene).
bash # Cover the apex and www (and any subdomain you serve) sudo certbot certonly --nginx -d example.com -d www.example.com - 3.
Prüfen, welches Zertifikat jeder Name erhält
Auf gemeinsam genutzten Servern erhält ein Name ohne eigenen Server-Block das Standardzertifikat einer anderen Website.
text # nginx: every served name needs a server block with a matching certificate server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; }