替换RapidSSL证书后出现NET::ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN错误求助
解决NET::ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN错误的实操方案
我刚踩过几乎一模一样的坑,给你唠唠怎么搞定这个问题:
先搞懂错误根源
这个报错就是**公钥固定(HPKP)**在搞事情——之前你用Symantec证书的时候,大概率服务器配置了HPKP响应头,浏览器会把旧证书的公钥哈希缓存起来,有效期还贼长(通常几个月)。现在换了RapidSSL的新证书,公钥和旧的不一样,浏览器触发了安全校验,就弹出这个错误了。
解决步骤
1. 清理服务器端的HPKP配置(核心!)
这是问题的关键,必须优先处理:
- 用命令检查服务器返回的响应头:
看看返回结果里有没有curl -I https://你的域名.comPublic-Key-Pins或者Public-Key-Pins-Report-Only这两行。 - 如果有,直接把Web服务器(Nginx/Apache/其他)里的HPKP配置删掉,重启服务。
2. 客户端测试用的临时解决方法(仅自己测试用,别让普通访客这么操作)
如果你要快速验证修复效果,可以手动清除浏览器的公钥固定缓存:
- Chrome/Edge:打开
chrome://net-internals/#hsts,在「Delete domain security policies」输入你的域名,点击删除,然后清空缓存重启浏览器。 - Firefox:地址栏输入
about:config,搜索security.cert_pinning.enforcement_level,把值改成0,重启浏览器。测试完记得改回默认的1。
3. 后续避坑建议
- 现在HPKP已经被主流浏览器弃用了(MDN都不推荐使用),别再配置这个头了,改用Certificate Transparency(CT)日志来增强证书安全性更靠谱。
- 要是之前非得用HPKP,一定要配置备份密钥——换证书的时候用备份密钥对应的证书,就不会触发这个错误。但现在既然踩坑了,直接移除HPKP是最省心的选择。
内容的提问来源于stack exchange,提问作者yello_flash
相关产品推荐
相关产品推荐

