首页/安全/加密与证书速查/must-staple 扩展与装订强制

must-staple 扩展与装订强制

证书中带 TLS Feature 扩展声明 status_request 时,支持该扩展的客户端会要求服务端提供 OCSP 装订响应,否则拒绝连接;强度高于普通装订,但配置错误会直接导致不可用。

加密与证书速查安全更新于 2026-10-13

must-staple 是什么

must-staple 指证书里带 TLS Feature 扩展并声明 status_request,签发时可理解为对客户端的承诺:本证书的吊销状态必须通过 OCSP 装订(stapling)方式提供。支持该扩展的客户端(Firefox、Chrome 等)遇到声明了 must-staple 的证书时,若服务端没有装订响应,会直接拒绝连接而不是回退去自行查询 OCSP。好处是吊销信息跟着握手一起送达,不依赖客户端出网;代价是一旦装订链路失效,站点直接不可用。

基本信息

规范RFC 7633(TLS Feature 扩展),值 status_request(5)
客户端行为声明了 must-staple 的证书必须收到装订响应,否则握手失败
支持情况Firefox 全量支持,Chrome 在部分平台支持,需按版本核对
风险装订未就绪或 OCSP 不可用时服务直接不可用
检查看证书扩展与 s_client 的 OCSP 响应状态
替代方案普通装订 + 短有效期证书,容错性更好

典型使用场景

  • 吊销时效要求高的业务:希望客户端每次都拿到新鲜的吊销状态。
  • 客户端不出网的环境:避免每台终端自行查询 OCSP 造成的延迟与失败。
  • 合规声明:按内部策略要求吊销信息随握手下发。
  • 装订链路演练:验证 DNS、出网、时间同步三者齐备后才敢正式启用。
  • 故障复盘:站点中断时确认是否因 must-staple 与装订失效叠加导致。

检查与测试装订

检查与测试装订
# 确认证书声明了 must-staple(TLS Feature 里含 status_request)
openssl x509 -in cert.pem -noout -text | grep -A1 'TLS Feature'
# 看服务端是否真的装订了 OCSP 响应
openssl s_client -connect example.com:443 -servername example.com -status </dev/null 2>&1 | grep -A3 'OCSP Response'
# 服务端侧还需确认能定期更新装订响应:观察 nginx 的 ssl_stapling 相关日志

状态组合与结果

证书扩展服务端装订客户端结果
含 must-staple有有效装订响应握手正常,吊销信息随握手下发
含 must-staple无装订响应支持该扩展的客户端直接拒绝连接
普通证书有装订装订生效,但不强制
普通证书无装订客户端可能自行查询 OCSP 或按软失败处理
启用前先把整条装订链路验证通过:服务端能解析 OCSP 地址、能出网、系统时间准确、装订缓存能按期刷新。四项里任一缺失都会让站点在证书有效期内直接不可用。
证书已签发后再想加 must-staple 必须重新签发,扩展无法事后补写,规划时就要决定。

易错点

  • 未验证装订链路就启用 must-staple:OCSP 查询失败直接导致站点不可用,影响面比吊销检查更大。
  • 把装订缓存时间与 OCSP 响应的 nextUpdate 混淆:可用性窗口算错,故障时无法判断兜底是否还有效。
  • 换 CA 或换证书时漏掉新证书是否仍带该扩展:客户端行为前后不一致,排障时容易误判。
  • 以为 must-staple 能强制所有客户端:不支持该扩展的客户端仍会按普通方式处理。

数据来源与参考

  • RFC 7633(TLS Feature extension)
  • RFC 6066 §8(Certificate Status Request)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌