# OCSP Must-Staple是什么？定义、例子与常见误区

> OCSP Must-Staple 是一种证书扩展，要求客户端在服务器没有随握手提供有效 OCSP 响应时直接拒绝该证书。

Source: https://ssl.sh/zh/glossary/must-staple/
Last updated: 2026-11-10

OCSP Must-Staple 是 [RFC 7633](https://www.rfc-editor.org/rfc/rfc7633) 定义的 TLS Feature 证书扩展，取值为 status_request。它相当于证书持有者的一份承诺：凡是使用这张证书的服务器，都会在握手中附带 [OCSP](https://ssl.sh/zh/glossary/ocsp/) 响应；客户端因此可以把“没收到响应”当作硬失败，而不是默默放行。

## 为什么重要
Must-Staple 是业界试图把 OCSP 从“软失败”变成“硬失败”的主要方案，同时又不必让每个浏览器都去询问 CA。但实际支持一直很有限：Firefox 会强制执行，缺少响应时直接报错；Chrome 则忽略这个扩展。运维上它也很脆弱：响应服务器故障，或者 nginx 重启后还没取回响应，都会让强制执行的客户端无法访问网站。如今行业正在远离 OCSP：SC-063 投票让 OCSP 对 CA 变为可选，Let's Encrypt 在 2025-05-07 从新证书中移除 OCSP 地址的同时，也开始拒绝 Must-Staple 申请。

## 例子
检查证书是否带有该扩展：

```bash
openssl x509 -in cert.pem -noout -text | grep -A1 "TLS Feature"
```

输出 `TLS Feature:` 且下一行是 `status_request`，就说明这是一张 Must-Staple 证书；没有输出则表示证书不含该扩展。

## 常见误区
- **Must-Staple 是服务器上的一个开关。** 它是在签发时写进证书的，服务器还需要另外配置 [OCSP Stapling](https://ssl.sh/zh/glossary/ocsp-stapling/)，两者缺一不可。
- **所有浏览器都会强制执行。** Chrome 不执行，强制执行基本只见于 Firefox。
- **现在仍是推荐的加固手段。** CA 纷纷放弃 OCSP，Let's Encrypt 已无法再申请到 Must-Staple 证书；缩短证书有效期、依靠浏览器端吊销列表才是当前方向。

## 相关术语

- [OCSP Stapling](https://ssl.sh/zh/glossary/ocsp-stapling/): OCSP Stapling 是 TLS 服务器把 CA 签名、带有效期的 OCSP 响应随握手一起发给客户端的机制，浏览器因此不必再自己去问 CA。
- [OCSP](https://ssl.sh/zh/glossary/ocsp/): OCSP 是 RFC 6960 定义的在线证书状态协议，客户端可以向 CA 的响应服务器查询某一张证书当前是有效、已吊销还是未知。
- [证书吊销](https://ssl.sh/zh/glossary/revocation/): 证书吊销是 CA 在证书到期前宣布其作废的操作，通过 CRL 或 OCSP 对外公布，使客户端不再信任这张证书。
- [X.509](https://ssl.sh/zh/glossary/x509/): X.509 是 ITU-T 制定的公钥证书标准格式，其互联网配置规范 RFC 5280 规定了 TLS 所用证书的结构和验证方法。
- [TLS 握手](https://ssl.sh/zh/glossary/tls-handshake/): TLS 握手是 TLS 连接开始时的一组消息交换，客户端与服务器在其中协商协议版本和密码套件、验证服务器身份并派生会话密钥。
- [CRL](https://ssl.sh/zh/glossary/crl/): CRL 是由 CA 签名并定期重新发布的证书吊销列表，列出它在证书到期前就已吊销的证书序列号。
