浏览器

MOZILLA_PKIX_ERROR_REQUIRED_TLS_FEATURE_MISSING:缺 OCSP 装订

作者: · 最后核实

报错信息MOZILLA_PKIX_ERROR_REQUIRED_TLS_FEATURE_MISSING

MOZILLA_PKIX_ERROR_REQUIRED_TLS_FEATURE_MISSING 的意思是:证书承诺“每次连接都会附上最新的 OCSP 响应”,这次连接却没有。 这个承诺叫 OCSP Must-Staple。Firefox 会要求服务器兑现承诺,做不到就拒绝连接;其他浏览器会忽略这个标记。

先判断是网站的问题还是你电脑的问题

是网站的问题。用 SSL 检测 确认,它会显示证书是否带 Must-Staple、服务器是否装订了 OCSP 响应:

curl ssl.sh/example.com

访客修不了。刷新几次也许能打开(服务器已经取到响应),这本身就说明服务器在“按需装订”。

原因

这些原因的结果相同:服务器没把 OCSP 响应装订进 TLS 握手。

1. 没开启装订

申请证书时加了 Must-Staple(比如 certbot --must-staple),Web 服务器却没开 ssl_stapling。看看服务器发了什么:

openssl s_client -connect example.com:443 -servername example.com -status </dev/null 2>/dev/null \
  | grep -A3 "OCSP response"

显示 OCSP response: no response sent 就是这个问题。

2. Nginx 重启后按需获取

Nginx 是用到时才去取 OCSP 响应的,所以重启或重载之后的头几个连接没有装订。证书带 Must-Staple 时,这些访客在 Firefox 里就会失败。

3. 服务器连不上 OCSP 响应服务器

出站防火墙、没配 resolver、DNS 故障,都会让服务器取不到响应。国内服务器访问境外 CA 的 OCSP 地址时偶尔也会超时。Nginx 日志里对应的警告见 ssl_stapling ignored。

4. CA 已不再提供 OCSP

签发 CA 关闭了 OCSP 服务,装订就永远取不到。Let's Encrypt 在 2025 年停止接受 Must-Staple 申请并关闭了 OCSP,续期配置里还留着 Must-Staple 的,续期会失败或拿到无法使用的证书。

5. TLS 终止设备不支持装订

有些负载均衡和 CDN 不做装订,Must-Staple 证书不能用在这些地方。

在各浏览器/系统上的样子

只有 Firefox 会因为这个问题拒绝连接,Chrome、Edge 和 Safari 照常打开。

浏览器 显示内容
Firefox “建立安全连接失败”,代码 MOZILLA_PKIX_ERROR_REQUIRED_TLS_FEATURE_MISSING
Chrome / Edge / 360 / QQ 浏览器 正常打开(不执行 Must-Staple)
Safari 正常打开

站长怎么修

推荐的修法是换一张不带 Must-Staple 的证书;坚持用 Must-Staple,就必须让每次握手都带上 OCSP 响应。

1. 推荐:换一张不带 Must-Staple 的证书。 certbot 从续期配置里去掉这个选项,再强制重新签发:

sudo sed -i '/must_staple/d' /etc/letsencrypt/renewal/example.com.conf
sudo certbot certonly --nginx -d example.com --force-renewal
sudo systemctl reload nginx

acme.sh 重新签发时不要加 --ocsp-must-staple。

2. 坚持用 Must-Staple 的话,开启装订,并保证服务器能取到响应:

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;

每次重启后预热缓存(比如手动跑几次 openssl s_client -status),或者换用会预先获取响应的服务器软件。

3. 验证。 用 curl ssl.sh/example.com 和 Firefox 测试。

常见问题

为什么只有 Firefox 打不开?

主流浏览器里只有 Firefox 强制执行 Must-Staple,Chrome 和 Safari 会忽略这个扩展,所以同样的配置错误在它们那里看不出来。

怎么知道我的证书有没有 Must-Staple?

用 证书解析 查看,或者运行 openssl x509 -in cert.pem -noout -text,找一个列出 status_request 的 “TLS Feature” 扩展。

Must-Staple 还值得用吗?

对大多数网站来说不值得。它要求 CA 的 OCSP 服务稳定、你的服务器每次都装订成功。主要 CA 都在逐步放弃 OCSP,2026 年更常见的做法是缩短证书有效期,再配合浏览器端的吊销列表。

访客能做什么?

访客基本做不了什么,要由服务器端修复。刷新几次有时能打开,因为服务器已经拿到了响应。不要为了绕过它去关闭 OCSP 检查。

证书续期突然因为 Must-Staple 报错失败,为什么?

从 2025 年初开始,Let's Encrypt 会拒绝请求 Must-Staple 扩展的新订单,因为它不再运营 OCSP。certbot 或 acme.sh 的旧续期配置里如果还要求 Must-Staple,下一次续期就会失败。从 certbot 的续期配置文件里删掉 must_staple = True,或者去掉 acme.sh 命令里的 --ocsp-must-staple,再续期一次,最后用 curl ssl.sh/example.com 检查结果。宝塔面板等图形界面申请的证书一般不会带这个选项。

资料来源

  1. RFC 7633: X.509v3 TLS Feature Extension
  2. RFC 6960: OCSP
  3. nginx ngx_http_ssl_module: ssl_stapling
  4. Mozilla Support: Error codes on secure websites