自签名证书调试求助:导入CA证书后Chrome仍报ERR_CERT_COMMON_NAME_INVALID
咱们一步步来排查这个问题,我之前调试自签名证书时也踩过类似的坑,以下几个方向可以重点检查:
确认
--host-rules参数是否真正生效
先验证Chrome有没有正确把my.site.com映射到127.0.0.1:在地址栏输入chrome://net-internals/#host-resolver,在“Host resolver queries”的输入框里输入my.site.com,点击“Query”,看返回的结果是不是127.0.0.1。
另外要注意参数的格式:如果是Windows系统,在快捷方式的“目标”栏里,要确保参数紧跟在chrome.exe后面,比如"C:\Program Files\Google\Chrome\Application\chrome.exe" --host-rules="MAP my.site.com 127.0.0.1",引号和空格都不能错;如果是终端启动,要注意shell的引号转义问题(比如bash里可能需要用单引号包裹参数)。仔细核对服务器证书的SAN字段
虽然你提到配置了alt_names的DNS.1为my.site.com,但还是要确认证书里确实写入了这个信息。打开终端执行命令:openssl x509 -in your-server-cert.pem -text -noout找到
X509v3 Subject Alternative Name这一项,确认里面明确显示DNS:my.site.com。Chrome现在优先校验SAN字段,哪怕commonName正确,SAN缺失或不匹配都会触发这个错误。另外要注意:你检查的是服务器证书,不是CA证书哦。清除Chrome的证书和浏览器缓存
Chrome经常会缓存旧的证书信息,哪怕你更新了信任列表:- 输入
chrome://settings/clearBrowserData,切换到“高级”标签,时间范围选“所有时间”,勾选“缓存的图片和文件”、“Cookie和其他网站数据”,点击“清除数据”。 - 再进入
chrome://settings/certificates,到“受信任的根证书颁发机构”标签,找到你的CA证书,确认它的状态是“已信任”;如果有同名的旧CA证书,先删除再重新导入一次。
- 输入
验证Chrome是否使用了正确的根CA
访问my.site.com时,点击地址栏的证书错误图标,选择“证书信息”,查看证书链的最顶层,确认是你导入的那个CA证书,而不是系统里其他同名或相似的CA。另外,导入证书时要注意存储位置:Windows下要选“本地计算机”而不是“当前用户”,这样Chrome才能读取到;Linux/macOS要确保导入到系统级的证书存储。检查系统hosts文件是否冲突
虽然--host-rules的优先级比系统hosts高,但还是可以检查一下hosts文件:Windows是C:\Windows\System32\drivers\etc\hosts,Linux/macOS是/etc/hosts,确保里面没有其他my.site.com的映射条目,避免干扰。用隐身模式测试
打开Chrome隐身窗口(Ctrl+Shift+N),再访问my.site.com。如果隐身模式下正常,说明是普通模式下的扩展程序或者缓存导致的问题——比如某些安全类扩展会拦截自签名证书,或者本地缓存的旧证书没有清理干净。升级Chrome到最新版本
旧版本的Chrome可能对SAN字段的校验有bug,或者对自签名证书的信任逻辑有差异。建议升级到最新稳定版后再测试。
内容的提问来源于stack exchange,提问作者chx

