Saltar al contenido
ecdsa.com
Java (JSSE HostnameChecker)Java

Mensaje de error

No subject alternative names matching IP address 127.0.0.1 found

También se muestra como

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

La dirección es la de tu URL; JDK 21 y posteriores anteponen «(certificate_unknown) » al texto de la excepción. Para nombres de host DNS, el mensaje es «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

Qué significa

El host de la URL es una dirección IP, y la extensión de nombre alternativo del sujeto del certificado no tiene ninguna entrada de dirección IP igual a ella. Java (según el RFC 6125) compara las direcciones IP solo con las entradas SAN de tipo IP; los nombres DNS y el nombre común nunca coinciden con una dirección.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Conectar con un nombre DNS que figure en el certificado

    Usa el nombre de host y haz que se resuelva a la dirección necesaria; así se supera la verificación del nombre de host.

    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 el certificado con una entrada SAN de tipo IP

    Cuando los clientes tengan que usar la dirección, añádela como entrada IP (las CA públicas rara vez emiten estos certificados; las privadas sí pueden).

    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

Errores relacionados

Explorar toda la base de datos de errores de firma