Перейти к содержимому
ecdsa.com
GNU Wget (GnuTLS build); the alias is the OpenSSL build's wordingcurl

Сообщение об ошибке

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.

Почему это происходит

Как исправить

  1. 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. 2.

    Перевыпустите сертификат с недостающим именем

    Добавьте в запрос на сертификат все имена хостов, по которым обращаются клиенты, затем разверните новый сертификат и перезагрузите конфигурацию сервера.

    bash
    sudo certbot certonly --nginx -d example.com -d www.example.com -d api.example.com
  3. 3.

    Используйте имя из сертификата

    Если сервер доступен по одному из перечисленных в сертификате имён, укажите это имя в URL вместо IP-адреса или псевдонима.

    bash
    # Download through a name the certificate lists, not an IP or alias
    wget https://www.example.com/file.tar.gz

Связанные ошибки

Открыть всю базу ошибок подписей