Pular para o conteúdo
ecdsa.com
Java (JSSE HostnameChecker)Java

Mensagem de erro

No subject alternative names matching IP address 127.0.0.1 found

Também aparece como

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

O endereço é o da sua URL; a partir do JDK 21, o texto da exceção ganha o prefixo “(certificate_unknown) ”. Para nomes de host DNS, a mensagem é “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

O que significa

O host da URL é um endereço IP, e a extensão Subject Alternative Name do certificado não tem nenhuma entrada de endereço IP igual a ele. O Java (segundo a RFC 6125) compara endereços IP apenas com entradas SAN do tipo IP; nomes DNS e o Common Name nunca correspondem a um endereço.

Por que acontece

Como corrigir

  1. 1.

    Conectar por um nome DNS que conste do certificado

    Use o nome de host e faça-o resolver para o endereço necessário; assim a verificação do nome de host passa.

    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.

    Emitir o certificado com um SAN de IP

    Quando os clientes precisam usar o endereço, adicione-o como entrada IP (CAs públicas raramente emitem esse tipo de certificado; CAs privadas podem emitir).

    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

Erros relacionados

Ver toda a base de erros de assinatura