Mensaje de error
net::ERR_CERT_COMMON_NAME_INVALID
La pantalla de advertencia muestra «NET::ERR_CERT_COMMON_NAME_INVALID»; las herramientas de automatización imprimen «net::ERR_CERT_COMMON_NAME_INVALID».
Chrome, Edge and other Chromium browsers — the certificate does not cover the host name in the address bar
Qué significa
El certificado es de confianza y está vigente, pero el nombre de host de la barra de direcciones no figura entre sus nombres alternativos del sujeto (SAN). Pese a lo que sugiere el nombre del error, Chrome no usa en absoluto el nombre común (desde Chrome 58): el certificado debe incluir el host en subjectAltName. Casos típicos: www frente al dominio sin www, un subdominio nuevo o un comodín usado un nivel más abajo de lo que cubre.
Por qué ocurre
El certificado no incluye este host
frecuenteUn subdominio o alias añadido en el DNS sin volver a emitir el certificado.
Un comodín usado para dos niveles
frecuente*.example.com cubre shop.example.com, pero no eu.shop.example.com (como ocurre con wrong.host.badssl.com en la reproducción).
www y el dominio sin www
frecuenteUn certificado para www.example.com no cubre example.com, ni al revés; hay que incluir ambos.
El nombre de host solo figura en el nombre común (CN)
ocasionalLos certificados sin subjectAltName (herramientas internas antiguas) fallan en Chrome aunque el CN coincida.
Cómo solucionarlo
- 1.
Comparar la lista de SAN con la dirección
El nombre que falta es el que hay que añadir.
bash echo | openssl s_client -connect www.example.com:443 -servername www.example.com 2>/dev/null \ | openssl x509 -noout -ext subjectAltName - 2.
Volver a emitir el certificado con todos los nombres que sirves
Incluye el dominio raíz, www y todos los subdominios (o un comodín por nivel).
bash # Cover the apex and www (and any subdomain you serve) sudo certbot certonly --nginx -d example.com -d www.example.com - 3.
Comprobar qué certificado recibe cada nombre
En servidores compartidos, un nombre sin su propio bloque de servidor recibe el certificado predeterminado de otro sitio.
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; }