Aller au contenu
ecdsa.com
Go crypto/x509Go

Message d’erreur

x509: certificate is not valid for any names, but wanted to match api.example.com

Également affiché sous la forme

  • tls: failed to verify certificate: x509: certificate is not valid for any names, but wanted to match api.example.com

Le nom qui suit « wanted to match » est la cible de votre connexion. Pour les certificats sans aucune extension SAN, Go affiche plutôt « x509: certificate relies on legacy Common Name field, use SANs instead » (lorsque le CN aurait correspondu).

Go crypto/x509 — HostnameError for a certificate with no DNS SANs (e.g. IP-only or empty SAN list)

Ce que cela signifie

Go a tenté de faire correspondre le nom d’hôte au certificat et n’a trouvé aucun nom DNS : l’extension SAN existe, mais ne contient que des adresses IP (ou d’autres types d’entrées), et le nom commun (CN) n’est pas pris en compte. Go signale que le certificat ne couvre aucun nom, puis indique le nom qu’il cherchait.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Vérifier les entrées SAN et l’usage prévu

    La liste SAN montre quels types de noms sont présents ; extendedKeyUsage indique s’il s’agit bien d’un certificat serveur.

    bash
    echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null \
      | openssl x509 -noout -subject -ext subjectAltName,extendedKeyUsage
  2. 2.

    Émettre un certificat serveur avec des SAN DNS

    Incluez les noms DNS qu’utilisent les clients, ainsi que des entrées IP s’ils se connectent aussi par adresse.

    bash
    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"
  3. 3.

    Ou se connecter à l’adresse indiquée dans le certificat

    Les SAN de type IP ne correspondent que lorsque le client se connecte à cette adresse IP.

    go
    // If the certificate is meant for the IP address, dial the IP (it is matched against IP SANs)
    resp, err := client.Get("https://10.0.0.5:8443/")

Erreurs associées

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