NET::ERR_CERT_COMMON_NAME_INVALID 报错解决
错误概述
NET::ERR_CERT_COMMON_NAME_INVALID 是浏览器在验证 SSL/TLS 证书时出现的常见错误。该错误表示服务器提供的证书中的 Common Name (CN) 或 Subject Alternative Names (SANs) 与用户实际访问的域名不匹配。例如,证书颁发给 example.com,但你访问的是 www.example.com 或 192.168.1.1,就会触发此报错。
常见原因
- 证书域名不匹配:证书仅对特定域名有效,如证书 CN 为 *.example.com,但你通过 IP 地址或不同子域名访问。
- 证书过期或无效:证书本身已失效或未正确安装。
- 自签名证书:开发环境使用自签名证书,浏览器默认不信任。
- 中间证书缺失:服务器未正确配置完整的证书链。
- 系统时间错误:客户端系统时间与证书有效期不符。
解决方法
方法一:确认域名与证书匹配
- 点击浏览器地址栏左侧的锁图标或“不安全”提示,查看证书详情。
- 对比证书中的“颁发给”字段(CN 或 SANs)与当前访问的域名是否完全一致(包括 www 前缀)。
- 如果不一致,请使用证书对应的域名访问,或重新申请匹配的证书。
方法二:为证书添加缺失的域名
如果你拥有服务器管理权限,可重新生成证书并包含所有需要访问的域名:
- 在生成证书请求(CSR)时,在 CN 字段填写主域名(如 example.com)。
- 在 SANs 字段添加其他域名(如 www.example.com、mail.example.com)或 IP 地址。
- 使用 OpenSSL 等工具生成新证书并部署到服务器。
方法三:使用 IP 地址访问时处理
如果必须通过 IP 地址访问,确保证书的 SANs 中包含该 IP。否则,考虑使用本地 hosts 文件将 IP 映射到域名:
- 编辑
/etc/hosts(Linux/Mac)或C:\Windows\System32\drivers\etc\hosts(Windows)。 - 添加一行:
192.168.1.100 example.com,然后通过域名访问。
方法四:安装自签名证书到信任库(开发环境)
- 导出服务器上的自签名证书为 .crt 或 .pem 文件。
- 在客户端导入证书:
- 重启浏览器后错误应消失。
方法五:检查系统时间
- 确认客户端系统日期和时间正确(包括时区)。
- 如果时间偏差超过证书有效期范围,浏览器会认为证书无效。
- 开启自动同步时间功能(如 NTP)。
方法六:临时绕过(仅用于测试)
在 Chrome 浏览器中,如果了解风险,可尝试以下步骤临时忽略错误:
- 在错误页面点击“高级”按钮。
- 点击“继续前往 [域名](不安全)”链接。
- 此操作仅对当前会话有效,且不推荐在生产环境中使用。
预防措施
- 购买证书时确保包含所有需要保护的域名(通配符证书可覆盖 *.example.com)。
- 使用 Let's Encrypt 等免费证书自动续签,并包含 SANs。
- 定期检查证书有效期,设置到期提醒。
- 部署时使用完整证书链(包括中间证书)。
总结
NET::ERR_CERT_COMMON_NAME_INVALID 错误的核心是域名与证书不匹配。通过核对域名、重新签发证书、导入自签名证书或调整系统时间,大多数情况可解决。生产环境务必使用受信任的 CA 签发的证书,并正确配置所有访问域名。