浏览器
SEC_ERROR_OCSP_INVALID_SIGNING_CERT:Firefox OCSP 报错怎么修
SEC_ERROR_OCSP_INVALID_SIGNING_CERTSEC_ERROR_OCSP_INVALID_SIGNING_CERT 的意思是:Firefox 收到的证书状态(OCSP)响应,是由一张没有资格签它的证书签名的。 Firefox 会把不可信的吊销答复当作失败处理,而不是忽略它。同一系列还有响应过期、响应来自未来、响应被拒绝等错误。
先判断是网站的问题还是你电脑的问题
网站装订的 OCSP 响应有问题,是网站或 CA 的问题;装订正常,先查电脑时间。用 SSL 检测 查网站,它会显示服务器有没有装订 OCSP 响应、响应是否有效:
curl ssl.sh/example.com
- 检测提示装订响应或 CA 的响应服务器有问题:是网站或它的 CA 的问题。
- 检测正常:先查电脑时间(OCSP 响应只在一个时间窗口内有效),再考虑杀毒软件或代理拦截 HTTPS 时把装订响应弄坏了。
原因
这类报错有 5 种原因:前 2 种是 OCSP 响应的签名证书不对,后 3 种各自对应 Firefox 的另一个 OCSP 错误码。
1. 服务器缓存了错误的装订响应
换证书或换 CA 之后,Web 服务器可能还在装订属于旧签发者的响应,Firefox 看到的就是“签名证书不对”。看看装订了什么:
openssl s_client -connect example.com:443 -servername example.com -status </dev/null 2>/dev/null \
| sed -n '/OCSP response:/,/^---/p' | head -30
通常重启(不是重载)TLS 服务就能清掉缓存的装订响应。
2. 私有 CA 的响应服务器证书不对
委托的 OCSP 响应服务器证书必须由同一个 CA 签发,并带有 OCSPSigning 扩展密钥用途(RFC 6960 第 4.2.2.2 节)。手工搭建的响应服务器经常漏掉这一点。
3. 响应过期(SEC_ERROR_OCSP_OLD_RESPONSE)
服务器连不上 CA 的响应服务器(防火墙、DNS 问题),只好一直装订一个已经过了 nextUpdate 的旧响应。国内服务器访问部分境外 CA 的 OCSP 地址不稳定时容易出现。放行服务器到 CA OCSP 地址的出站 HTTP。
4. 时间问题(SEC_ERROR_OCSP_FUTURE_RESPONSE)
访客电脑时间慢了,改对时间即可,见 系统时间错误。
5. 响应服务器出错(SEC_ERROR_OCSP_SERVER_ERROR、SEC_ERROR_OCSP_UNAUTHORIZED_RESPONSE)
CA 的响应服务器返回错误或拒绝请求,常发生在故障期间,一般是暂时的,CA 的状态页会有说明。
在各浏览器/系统上的样子
这组报错基本只出现在 Firefox:Chrome 对大多数证书不依赖实时 OCSP,Safari 有自己的吊销检查机制。
| 浏览器 | 显示内容 |
|---|---|
| Firefox | “建立安全连接失败”,代码为 SEC_ERROR_OCSP_* 之一 |
| Chrome / Edge / 360 / QQ 浏览器 | 通常不报错:Chrome 对大多数证书不依赖实时 OCSP |
| Safari | 通常能打开,苹果有自己的吊销检查机制 |
因为只有 Firefox 有反应,这类错误常被误以为是“Firefox 的问题”,但问题在服务器。
站长怎么修
修好装订响应就能消除报错;证书里没有 OCSP 地址时,直接关掉装订。
1. 刷新或修好装订。 Nginx 的装订需要签发者证书链和 DNS 解析器:
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/example.com.chain.pem;
resolver 223.5.5.5 119.29.29.29 valid=300s;
国内服务器可以用阿里 223.5.5.5、腾讯 119.29.29.29 这类公共 DNS。证书里没有 OCSP 地址时(比如现在的 Let's Encrypt 证书),装订不起作用,可以关掉。
2. 换证书后重启服务,丢掉旧的装订缓存:systemctl restart nginx。
3. 私有 CA 由签发 CA 重新给响应服务器签发带 extendedKeyUsage=OCSPSigning 的证书。
4. 验证。 用 curl ssl.sh/example.com 和 Firefox 测试。原理见 OCSP 和 CRL。
常见问题
能在 Firefox 里关掉 OCSP 检查来绕过吗?
只能临时关一下做测试,测完要打开。Firefox 的“查询 OCSP 响应服务器”选项是用来发现已吊销证书的。关掉后网站能打开,就说明是网站的装订或它的 CA 响应服务器有问题,应该由站长去修。
OCSP 和 OCSP 装订有什么区别?
普通 OCSP 是浏览器自己去问 CA 的响应服务器;装订(Stapling)是 Web 服务器先取回响应,在 TLS 握手时一并发给浏览器,更快也更保护隐私。装订的响应坏了,在服务器刷新之前所有访客都会受影响。
电脑时间不对会导致 OCSP 报错吗?
会。时间慢了,新的响应看起来像来自未来(SEC_ERROR_OCSP_FUTURE_RESPONSE);时间快了很多,响应又像已经过期(SEC_ERROR_OCSP_OLD_RESPONSE)。先把系统时间改对。