OCSP Stapling 不是单行配置即可生效的功能,而是需同时满足证书含有效 OCSP URI、Nginx≥1.3.7、OpenSSL≥1.0.1、系统时间偏差≤±5分钟、证书链完整五项前提,并在server块中配齐ssl_stapling on、ssl_stapling_verify on、ssl_trusted_certificate、resolver及resolver_timeout的协同机制。

OCSP Stapling 不是加一行 ssl_stapling on 就能生效的功能,而是一套必须全部到位的协同机制。配置正确时,可减少 150–300ms 的首次 HTTPS 握手延迟,对移动端和弱网用户效果明显;任一条件缺失,Nginx 会静默关闭 stapling(不报错、不警告),实际无效。
确认基础前提是否满足
以下五项缺一不可:
- 证书含有效 OCSP 地址:用命令检查
openssl x509 -in your.crt -text -noout | grep -A1 "OCSP",输出中需有类似OCSP - URI:http://ocsp.int-x3.letsencrypt.org - Nginx ≥ 1.3.7(生产环境建议 ≥ 1.11.0)
- OpenSSL ≥ 1.0.1(推荐 1.1.1 或更新版)
- 系统时间偏差 ≤ ±5 分钟(OCSP 响应含严格时间戳,超时即被拒绝)
- 证书链完整:要么
ssl_certificate指向包含站点证书 + 所有中间证书的文件(如 Let’s Encrypt 的fullchain.pem),要么用ssl_trusted_certificate单独指定可信链
HTTPS server 块中必须添加的核心配置
以下指令须写在监听 443 的 server 块内(不能放在 http 块顶层,也不能嵌套在 location 中):
-
ssl_stapling on;—— 必须显式开启(默认为off) -
ssl_stapling_verify on;—— 强烈建议启用,用于校验 OCSP 响应签名、有效期及颁发者 -
ssl_trusted_certificate /path/to/fullchain.pem;—— 指向中间证书 + 根证书拼接的 PEM 文件(顺序:中间证书在前、根证书在后;不能含站点证书或私钥) -
resolver 8.8.8.8 1.1.1.1 223.5.5.5 valid=300s;—— 必须显式配置 DNS 解析器(Nginx 不读/etc/resolv.conf),多个 DNS 提升容错性 -
resolver_timeout 5s;—— DNS 查询超时设为 5 秒,避免卡住 TLS 握手
避开两个最常见失效陷阱
这两个问题占 stapling 静默失效案例的绝大多数:
-
resolver 不可达或缺失:Nginx 日志仅提示
no resolver defined to resolve OCSP responder hostname,随后自动禁用 stapling,无握手错误 -
ssl_trusted_certificate文件出错:中间证书缺失、顺序颠倒、混入站点证书、或与ssl_certificate内容重复,都会导致ssl_stapling_verify on校验失败
验证是否真正生效
配置完成后重载 Nginx(sudo nginx -s reload),可用以下方式验证:
- 终端执行:
openssl s_client -connect your-domain.com:443 -status -servername your-domain.com 2>&1 | grep -i "OCSP response",若返回OCSP Response Status: successful (0x0)表示已启用 - 浏览器开发者工具 → Security 标签页 → 查看 “Certificate Transparency” 或 “Certificate Status” 是否显示 “stapled” 或类似提示
- 使用在线工具如 SSL Labs Test,结果页中搜索 “OCSP stapling” 查看是否标记为 “Yes”


















