Fehlermeldung
The certificate's owner does not match hostname 'api.example.com'
Auch ausgegeben als
- ERROR: no certificate subject alternative name matches
GnuTLS-Builds von wget geben diese Zeile aus; OpenSSL-Builds geben „ERROR: no certificate subject alternative name matches“ aus, gefolgt von „requested host name '<host>'.“ in der nächsten Zeile. Der Host ist der aus deiner URL.
Was der Fehler bedeutet
Das Zertifikat wurde erfolgreich geprüft, ist aber für andere Namen ausgestellt als den Host in der URL, deshalb bricht wget ab. Der Host wird mit den DNS-Namen in der Erweiterung Subject Alternative Name des Zertifikats verglichen – dort tragen alle aktuellen CAs die Namen ein, die ein Zertifikat abdeckt. wget beendet sich mit Status 5.
Warum der Fehler auftritt
Das Zertifikat deckt diesen Namen nicht ab
häufigEin Zertifikat für www.example.com deckt weder example.com noch api.example.com noch eine neue Subdomain ab; jeder Name muss aufgeführt sein, und ein Wildcard-Eintrag deckt nur ein Label ab.
Die URL verwendet eine IP-Adresse oder einen internen Alias
häufigEin Download von https://10.0.0.5/ oder über einen Container- oder Host-Alias erreicht den Server, fragt aber nach einem Namen, den das Zertifikat nicht enthält.
Der Server hat das Zertifikat einer anderen Website geliefert
gelegentlichBeim Shared Hosting und bei Ingress-Controllern bekommt ein Name ohne eigenen Server-Block das Standardzertifikat.
So behebst du den Fehler
- 1.
Vom Zertifikat abgedeckte Namen auflisten
Vergleiche die Einträge in subjectAltName mit dem Host in der URL.
bash echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null \ | openssl x509 -noout -ext subjectAltName - 2.
Zertifikat mit dem fehlenden Namen neu ausstellen
Nimm jeden Hostnamen, den Clients verwenden, in die Zertifikatsanfrage auf, rolle das Zertifikat dann aus und lade den Server neu.
bash sudo certbot certonly --nginx -d example.com -d www.example.com -d api.example.com - 3.
Einen Namen aus dem Zertifikat verwenden
Ist der Server unter einem aufgeführten Namen erreichbar, verwende diesen Namen in der URL statt einer IP-Adresse oder eines Alias.
bash # Download through a name the certificate lists, not an IP or alias wget https://www.example.com/file.tar.gz
Verwandte Fehler
curl: (60) SSL: no alternative certificate subject name matches target hostname…curl (OpenSSL backend)fatal: unable to access 'https://git.example.com/team/app.git/': SSL: certifica…git over HTTPS with libcurl-gnutls (Debian, Ubuntu)x509: certificate is valid for example.com, not api.example.comGo crypto/x509