Message d’erreur
The certificate's owner does not match hostname 'api.example.com'
Également affiché sous la forme
- ERROR: no certificate subject alternative name matches
Les builds de wget reposant sur GnuTLS affichent cette ligne ; les builds reposant sur OpenSSL affichent « ERROR: no certificate subject alternative name matches », suivi de « requested host name '<host>'. » à la ligne suivante. L’hôte est celui de votre URL.
Ce que cela signifie
Le certificat a passé la vérification, mais il a été émis pour d’autres noms que l’hôte de l’URL, si bien que wget s’arrête. L’hôte est comparé aux noms DNS de l’extension Subject Alternative Name du certificat, là où toutes les AC actuelles placent les noms couverts par un certificat. wget se termine avec le code de sortie 5.
Pourquoi cela se produit
Le certificat ne couvre pas ce nom
fréquenteUn certificat pour www.example.com ne couvre ni example.com, ni api.example.com, ni un nouveau sous-domaine ; chaque nom doit y figurer, et un wildcard ne couvre qu’un seul niveau du nom.
L’URL utilise une adresse IP ou un alias interne
fréquenteUn téléchargement depuis https://10.0.0.5/ ou via un alias de conteneur ou d’hôte atteint le serveur, mais demande un nom que le certificat ne contient pas.
Le serveur a envoyé le certificat d’un autre site
occasionnelleSur les hébergements mutualisés et les contrôleurs d’ingress, un nom sans bloc server dédié reçoit le certificat par défaut.
Comment corriger l’erreur
- 1.
Lister les noms couverts par le certificat
Comparez les entrées subjectAltName avec l’hôte de l’URL.
bash echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null \ | openssl x509 -noout -ext subjectAltName - 2.
Réémettre le certificat avec le nom manquant
Ajoutez à la demande de certificat chaque nom d’hôte qu’utilisent les clients, puis déployez le certificat et rechargez le serveur.
bash sudo certbot certonly --nginx -d example.com -d www.example.com -d api.example.com - 3.
Utiliser un nom présent dans le certificat
Si le serveur est joignable sous l’un des noms listés, utilisez ce nom dans l’URL plutôt qu’une adresse IP ou un alias.
bash # Download through a name the certificate lists, not an IP or alias wget https://www.example.com/file.tar.gz
Erreurs associées
curl: (60) SSL: no alternative certificate subject name matches target hostname…curl (OpenSSL backend)fatal: unable to access 'https://git.example.com/team/app.git/': SSL: certifica…git over HTTPS with libcurl-gnutls (Debian, Ubuntu)x509: certificate is valid for example.com, not api.example.comGo crypto/x509