Перейти к содержимому
ecdsa.com
Java (JSSE HostnameChecker)Java

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

No subject alternative names matching IP address 127.0.0.1 found

Также выводится как

  • java.security.cert.CertificateException: No subject alternative names matching IP address 127.0.0.1 found

Адрес берётся из вашего URL; JDK 21 и более поздние версии добавляют в начало текста исключения «(certificate_unknown) ». Для DNS-имён хостов сообщение выглядит так: «No subject alternative DNS name matching <host> found.»

Java (JSSE HostnameChecker) — URL host is an IP address that is not an IP SAN of the certificate

Что это означает

Хост в URL — IP-адрес, а в расширении альтернативного имени субъекта (SAN) сертификата нет записи типа IP с таким же адресом. Java (согласно RFC 6125) сравнивает IP-адреса только с записями IP SAN; DNS-имена и общее имя (CN) никогда не совпадают с адресом.

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

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

  1. 1.

    Подключайтесь по DNS-имени, указанному в сертификате

    Используйте имя хоста и настройте, чтобы оно разрешалось в нужный адрес; тогда проверка имени хоста пройдёт успешно.

    bash
    # Use the DNS name from the certificate; map it to the IP where needed
    echo "10.0.0.5 api.example.com" | sudo tee -a /etc/hosts
    curl -sI https://api.example.com/
  2. 2.

    Выпустите сертификат с IP SAN

    Если клиенты обязаны обращаться по адресу, добавьте его как запись типа IP (публичные CA выпускают такие сертификаты редко, частные CA могут).

    bash
    # Or issue the certificate with the IP address as an IP SAN entry
    openssl req -new -key server.key -out server.csr -subj "/CN=api.example.com" \
      -addext "subjectAltName=DNS:api.example.com,IP:10.0.0.5"
    keytool -certreq -alias server -keystore server.p12 -ext "SAN=dns:api.example.com,ip:10.0.0.5" -file server.csr

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

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