Mensagem de erro
net::ERR_CERT_COMMON_NAME_INVALID
A tela de aviso mostra “NET::ERR_CERT_COMMON_NAME_INVALID”; ferramentas de automação imprimem “net::ERR_CERT_COMMON_NAME_INVALID”.
Chrome, Edge and other Chromium browsers — the certificate does not cover the host name in the address bar
O que significa
O certificado é confiável e está dentro da validade, mas o nome de host da barra de endereços não está entre os Subject Alternative Names dele. Apesar do nome do erro, o Chrome não usa o Common Name de forma alguma (desde o Chrome 58); o certificado precisa listar o host em subjectAltName. Casos típicos: www versus domínio sem www, um subdomínio novo ou um curinga aplicado a um nível mais profundo do que ele cobre.
Por que acontece
O certificado não lista este host
comumUm subdomínio ou alias adicionado no DNS sem reemitir o certificado.
Um curinga usado para dois níveis
comum*.example.com cobre shop.example.com, mas não eu.shop.example.com (como em wrong.host.badssl.com na reprodução).
www e o domínio sem www
comumUm certificado para www.example.com não cobre example.com, e vice-versa; os dois precisam estar listados.
O nome está só no Common Name
ocasionalCertificados sem subjectAltName (de ferramentas internas antigas) falham no Chrome mesmo quando o CN corresponde.
Como corrigir
- 1.
Comparar a lista de SANs com o endereço
O nome que falta é o que precisa ser adicionado.
bash echo | openssl s_client -connect www.example.com:443 -servername www.example.com 2>/dev/null \ | openssl x509 -noout -ext subjectAltName - 2.
Reemitir o certificado com todos os nomes servidos
Inclua o domínio apex, o www e todos os subdomínios (ou um curinga por nível).
bash # Cover the apex and www (and any subdomain you serve) sudo certbot certonly --nginx -d example.com -d www.example.com - 3.
Verificar qual certificado cada nome recebe
Em servidores compartilhados, um nome sem bloco server próprio recebe o certificado padrão de outro 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; }