Aller au contenu
ecdsa.com
Java (JSSE HostnameChecker)Java

Message d’erreur

No subject alternative names matching IP address 127.0.0.1 found

Également affiché sous la forme

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

L’adresse est celle de votre URL ; à partir du JDK 21, le texte de l’exception est précédé de « (certificate_unknown) ». Pour les noms d’hôte DNS, le message est « 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

Ce que cela signifie

L’hôte de l’URL est une adresse IP, et l’extension Subject Alternative Name du certificat ne contient aucune entrée d’adresse IP qui lui soit égale. Java (conformément à la RFC 6125) ne compare les adresses IP qu’aux entrées SAN de type IP ; les noms DNS et le nom commun (CN) ne correspondent jamais à une adresse.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Se connecter par un nom DNS présent dans le certificat

    Utilisez le nom d’hôte et faites-le résoudre vers l’adresse voulue ; la vérification du nom d’hôte réussit alors.

    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.

    Émettre le certificat avec un SAN de type IP

    Lorsque les clients doivent utiliser l’adresse, ajoutez-la comme entrée IP (les AC publiques en émettent rarement ; les AC privées le peuvent).

    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

Erreurs associées

Parcourir toute la base de données des erreurs de signature