Message d’erreur
net::ERR_CERT_COMMON_NAME_INVALID
La page d’avertissement affiche « NET::ERR_CERT_COMMON_NAME_INVALID » ; les outils d’automatisation affichent « net::ERR_CERT_COMMON_NAME_INVALID ».
Chrome, Edge and other Chromium browsers — the certificate does not cover the host name in the address bar
Ce que cela signifie
Le certificat est approuvé et en cours de validité, mais le nom d’hôte de la barre d’adresse ne figure pas parmi ses noms alternatifs du sujet (SAN). Malgré le nom de l’erreur, Chrome n’utilise pas du tout le nom commun (depuis Chrome 58) : le certificat doit indiquer l’hôte dans subjectAltName. Cas typiques : www et le domaine nu, un nouveau sous-domaine, ou un wildcard utilisé un niveau trop profond.
Pourquoi cela se produit
Le certificat ne mentionne pas cet hôte
fréquenteUn sous-domaine ou un alias ajouté dans le DNS sans que le certificat ait été réémis.
Un wildcard utilisé sur deux niveaux
fréquente*.example.com couvre shop.example.com, mais pas eu.shop.example.com (comme sur wrong.host.badssl.com dans la reproduction).
www et le domaine nu
fréquenteUn certificat pour www.example.com ne couvre pas example.com, et inversement : les deux noms doivent figurer dans le certificat.
L’hôte n’apparaît que dans le nom commun
occasionnelleLes certificats sans subjectAltName (anciens outils internes) sont rejetés par Chrome, même lorsque le CN correspond.
Comment corriger l’erreur
- 1.
Comparer la liste des SAN avec l’adresse
Le nom manquant est celui qu’il faut ajouter.
bash echo | openssl s_client -connect www.example.com:443 -servername www.example.com 2>/dev/null \ | openssl x509 -noout -ext subjectAltName - 2.
Réémettre le certificat pour tous les noms servis
Incluez le domaine nu, www et tous les sous-domaines (ou un wildcard par niveau).
bash # Cover the apex and www (and any subdomain you serve) sudo certbot certonly --nginx -d example.com -d www.example.com - 3.
Vérifier le certificat que reçoit chaque nom
Sur les serveurs mutualisés, un nom sans son propre bloc server reçoit le certificat par défaut d’un autre site.
text # nginx: every served name needs a server block with a matching certificate server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; }