# OCSP Stapling（OCSP 装订）是什么？

> OCSP Stapling 是 TLS 服务器把 CA 签名、带有效期的 OCSP 响应随握手一起发给客户端的机制，浏览器因此不必再自己去问 CA。

Source: https://ssl.sh/zh/glossary/ocsp-stapling/
Last updated: 2026-11-10

OCSP Stapling 指由服务器而不是浏览器去 CA 取回签名的 [OCSP](https://ssl.sh/zh/glossary/ocsp/) 响应，并在 [TLS 握手](https://ssl.sh/zh/glossary/tls-handshake/)时把它“钉”在证书后面一起发给客户端。客户端通过 RFC 6066 定义的 status_request 扩展来请求它；在 TLS 1.3 中，响应放在 Certificate 消息里。响应由 CA 签名且有有效期，服务器既无法伪造，也不能无限期重放一个旧的 good 状态。

## 为什么重要
开启 Stapling 后，CA 只会看到服务器每隔几小时来取一次响应，而不是每个访客都去查询：既省掉一次网络往返，也不再暴露用户的访问记录。不过前提是证书里确实有 OCSP 地址。SC-063 投票让 OCSP 变成可选后，部分 CA 只发布 CRL；Let's Encrypt 自 2025-05-07 起签发的新证书不再带 OCSP 地址，这类证书开了 Stapling 也没有东西可“钉”，服务器会直接跳过。

## 例子
nginx 配置：

```nginx
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/chain.pem;
resolver 1.1.1.1 8.8.8.8 valid=300s;
```

检查服务器是否下发了 Stapling 响应：

```bash
openssl s_client -connect example.com:443 -servername example.com -status </dev/null 2>/dev/null | grep -i "ocsp response"
```

看到 `OCSP Response Status: successful` 说明已下发；`OCSP response: no response sent` 说明没有。nginx 是懒加载，重载配置后的第一个连接可能拿不到响应，多试几次再下结论。国内服务器若 resolver 指向的 DNS 无法解析 CA 的响应地址，也会一直没有响应。

## 常见误区
- **开了 Stapling 就能强制吊销检查。** 没有 [Must-Staple](https://ssl.sh/zh/glossary/must-staple/) 时，客户端收不到响应一般照样继续连接；Stapling 改善的是速度和隐私，而不是强制力。
- **证书没有 OCSP 地址时开启 Stapling 会导致网站打不开。** nginx 只会在错误日志里给出警告，握手照常完成，只是不带响应。
- **只写 ssl_stapling on 就够了。** 还需要配置 resolver，让 nginx 能解析响应服务器的域名，并提供签发者证书用于校验取回的响应。

## 相关术语

- [OCSP](https://ssl.sh/zh/glossary/ocsp/): OCSP 是 RFC 6960 定义的在线证书状态协议，客户端可以向 CA 的响应服务器查询某一张证书当前是有效、已吊销还是未知。
- [OCSP Must-Staple](https://ssl.sh/zh/glossary/must-staple/): OCSP Must-Staple 是一种证书扩展，要求客户端在服务器没有随握手提供有效 OCSP 响应时直接拒绝该证书。
- [TLS 握手](https://ssl.sh/zh/glossary/tls-handshake/): TLS 握手是 TLS 连接开始时的一组消息交换，客户端与服务器在其中协商协议版本和密码套件、验证服务器身份并派生会话密钥。
- [CRL](https://ssl.sh/zh/glossary/crl/): CRL 是由 CA 签名并定期重新发布的证书吊销列表，列出它在证书到期前就已吊销的证书序列号。
- [OCSP Responder](https://ssl.sh/zh/glossary/ocsp-responder/): OCSP Responder 是 CA 运营的 HTTP 服务，负责对 OCSP 查询返回带签名的有效、已吊销或未知状态。
- [证书吊销](https://ssl.sh/zh/glossary/revocation/): 证书吊销是 CA 在证书到期前宣布其作废的操作，通过 CRL 或 OCSP 对外公布，使客户端不再信任这张证书。
