文章资讯 / 常见问题 / SSL证书配置错误:NET::ERR_CERT_COMMON_NAME_INVALID错误的检测和修复

SSL证书配置错误:NET::ERR_CERT_COMMON_NAME_INVALID错误的检测和修复

发布时间: 分类:常见问题 作者:188mi 来源:互联网 阅读:96

NET::ERR_CERT_COMMON_NAME_INVALID 的意思是:浏览器拿到的 SSL 证书里,域名和地址栏访问的域名对不上。它通常不是证书坏了,而是域名漏签、解析指错或某一层没配置到位。

一、先说清报错在比对什么

浏览器在 TLS 握手后校验证书里的域名列表,比对两处:CN 字段和 SAN 扩展。SAN 是主角,CN 已被主流浏览器忽略,只作兼容保留。所以一张只写 CN、没有 SAN 的证书,在新版浏览器上照样会报错。

判断重点不是"证书是否有效",而是"证书覆盖的域名集合里有没有你正在访问的主机名"。example.com 和 www.example.com 在浏览器眼里是两个不同的名字,证书只签了其中一个,用另一个访问就会触发这个错误。这是绝大多数此类报错的共同根源。

二、六类高频成因,按出现频率排

  1. 只签了裸域,实际用 www 访问,或反过来。免费证书和不少商业证书默认只覆盖一个名字,申请时没把两个都勾上,问题就埋下了。
  2. CDN 和源站只换了一边。域名走加速时,用户看到的是边缘节点上的证书;加速层换了新证书,源站还是旧的,回源或直连测试就会露馅。
  3. 多站点服务器上证书串了站。Nginx 每个 server 块里的 server_name 与 ssl_certificate 必须一一对应,配置文件合并、复制粘贴时最容易错位。
  4. 解析已经切走,证书没跟着切。域名指向了新 IP,而新服务器上跑的是另一个站点的证书。
  5. 给 IP 或内网域名用了自签证书。现代浏览器要求 IP 必须写进 SAN,只写 CN 的 IP 证书一律不认。
  6. 证书过期或证书链不完整。它们通常报别的错误码,但配置混乱时几种告警会一起出现,排查时一并看。

三、五个动作,定位到具体环节

看证书实际覆盖了哪些域名。 本地终端执行:

openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -ext subjectAltName

输出里的 DNS: 条目就是证书覆盖的域名,Subject 字段可作对照。列表里没有你访问的主机名,原因就找到了。

看域名解析到哪。 执行 dig example.com +short 或 nslookup example.com,把返回的 IP 和服务器实际 IP 比对。对不上,说明流量根本没到你改的那台机器。

确认中间有没有加速层。 阿里云 CDN 控制台 → 域名管理 → HTTPS 配置,腾讯云、Cloudflare 的 SSL/TLS 页面同理,要分清证书挂在边缘还是源站,两边保持一致才不会互相打架。

换设备和网络复测。 手机用蜂窝数据打开一次,或执行 curl -vI https://example.com 看握手日志,排除本地缓存和 DNS 缓存的干扰。

用外部工具交叉验证。 浏览器证书详情页能看到颁发者和 SAN;证书透明度日志(crt.sh 输入域名)能查到该域名历史签发记录,用来判断是不是装错了旧证书。

四、按场景对号入座地修

  • 漏签域名:重新签发。阿里云控制台 → 数字证书管理服务 → 证书申请,域名栏把裸域和 www 一起填进 SAN;用 Let's Encrypt 就执行 certbot certonly -d example.com -d www.example.com,宝塔面板走"网站 → 设置 → SSL → Let's Encrypt"并勾选要覆盖的域名。费用以平台页面为准。
  • 加速层没换:在加速平台的 HTTPS 配置里上传或选择新证书,保存后等配置下发,一般几分钟生效,以控制台提示为准。
  • 多站点配错:打开 nginx.conf 逐个核对 server 块里 server_name 与 ssl_certificate、ssl_certificate_key 的对应关系,改完执行 nginx -t 校验语法再 nginx -s reload;Apache 则检查对应 VirtualHost 的 SSLCertificateFile 与 SSLCertificateKeyFile。
  • 解析与证书不同步:先把证书装好并验证通过,再切 DNS。切之前可以用 hosts 文件把域名指到新 IP 本地验证。
  • 自签证书:内网服务换受信任 CA 签发的证书,或在 SAN 里写入 IP,同时把根证书装进客户端信任库。

五、换好证书后要复核的几件事

用无痕窗口和手机蜂窝网络各访问一次,避免旧缓存误导判断;执行 curl -I https://example.com 确认无证书告警,curl -I http://example.com 确认跳转正常;确认站点是否开了 HSTS,开了的站点在证书出错时会被浏览器硬拦,改动前先留意;记录到期时间并设好自动续期,Let's Encrypt 证书有效期约 90 天,商业证书通常一年或更短;有多个子域的话逐个验证,别只测主域名。

相关工具与阅读