Сообщение об ошибке
The certificate's owner does not match hostname 'api.example.com'
Также выводится как
- ERROR: no certificate subject alternative name matches
Эту строку выводят сборки wget с GnuTLS. Сборки с OpenSSL выводят «ERROR: no certificate subject alternative name matches», а на следующей строке — «requested host name '<host>'.» Подставляется хост из вашего URL.
Что это означает
Сертификат прошёл проверку, но выпущен на другие имена, а не на хост из URL, поэтому wget останавливается. Хост сравнивается с DNS-именами в расширении сертификата «альтернативное имя субъекта» (SAN): именно туда все современные CA записывают имена, которые покрывает сертификат. wget завершается с кодом 5.
Почему это происходит
Сертификат не покрывает это имя
частоСертификат для www.example.com не покрывает ни example.com, ни api.example.com, ни новый поддомен: каждое имя должно быть перечислено в сертификате, а wildcard покрывает только одну метку.
В URL указан IP-адрес или внутренний псевдоним
частоПри скачивании с https://10.0.0.5/ или по псевдониму контейнера либо хоста запрос доходит до сервера, но обращается к нему по имени, которого в сертификате нет.
Сервер отправил сертификат другого сайта
иногдаНа виртуальном хостинге и в ingress-контроллерах для имени, у которого нет своего блока server, отдаётся сертификат по умолчанию.
Как исправить
- 1.
Выведите имена, которые покрывает сертификат
Сравните записи subjectAltName с хостом из URL.
bash echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null \ | openssl x509 -noout -ext subjectAltName - 2.
Перевыпустите сертификат с недостающим именем
Добавьте в запрос на сертификат все имена хостов, по которым обращаются клиенты, затем разверните новый сертификат и перезагрузите конфигурацию сервера.
bash sudo certbot certonly --nginx -d example.com -d www.example.com -d api.example.com - 3.
Используйте имя из сертификата
Если сервер доступен по одному из перечисленных в сертификате имён, укажите это имя в URL вместо IP-адреса или псевдонима.
bash # Download through a name the certificate lists, not an IP or alias wget https://www.example.com/file.tar.gz
Связанные ошибки
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