ocsp stapling需同时满足nginx≥1.3.7、服务器可访问ocsp url、证书链完整、系统时间误差≤5分钟,并配置ssl_stapling on、ssl_stapling_verify on、ssl_trusted_certificate和resolver四项缺一不可。

在Nginx中启用OCSP Stapling(常被误称为 SSL Stapling)能显著减少HTTPS握手时的证书状态验证延迟,避免客户端直连第三方OCSP响应服务器,提升TLS性能与隐私性。关键在于正确配置OCSP响应缓存和验证机制,而非简单开启开关。
确认证书支持OCSP并获取有效响应
OCSP Stapling依赖证书签发机构(CA)提供可访问的OCSP服务器,且证书需包含Authority Information Access扩展(含OCSP URI)。可用以下命令检查:
若无输出或URI不可达,Stapling将无法工作。建议使用主流CA(如Let’s Encrypt、Sectigo、DigiCert)签发的证书,它们默认支持且OCSP服务稳定。
在Nginx中启用并优化OCSP Stapling参数
在server块中添加以下指令(需OpenSSL 1.0.2+ 和 Nginx 1.3.7+):
- ssl_stapling on; — 启用Stapling功能
- ssl_stapling_verify on; — 强制验证OCSP响应签名及有效期(强烈推荐)
- ssl_trusted_certificate /path/to/ca-bundle.pem; — 指定包含根CA和中间CA证书的完整链文件(不能只用站点证书)
- resolver 8.8.8.8 1.1.1.1 valid=300s; — 配置DNS解析器,用于查询OCSP服务器域名;valid值建议设为300秒以内,避免DNS缓存过期导致解析失败
注意:ssl_trusted_certificate必须是PEM格式、按“站点证书→中间证书→根证书”顺序拼接的完整信任链,否则ssl_stapling_verify on会失败并静默禁用Stapling。
验证Stapling是否生效
重启Nginx后,用以下命令测试OCSP响应是否被成功 stapled:
openssl s_client -connect example.com:443 -servername example.com -status -tlsextdebug 2>&1 | grep -i "ocsp response"若输出中出现OCSP Response Status: successful (0x0)及响应内容,则表示Stapling已正常工作。也可用在线工具如 SSL Checker 或 SSL Labs Test 查看“OCSP Stapling”项是否显示为“Yes”。
常见问题与规避方法
- Stapling未生效但配置无误?检查系统时间是否准确——OCSP响应含严格的时间戳,偏差超过5分钟即被拒绝
- Nginx日志出现
no suitable OCSP responder URL found?说明证书缺失OCSP URI,需重新申请或联系CA补全 - 启用
ssl_stapling_verify on后连接失败?大概率是ssl_trusted_certificate路径错误、文件权限不足或内容不完整,建议用openssl verify -untrusted intermediate.pem -CAfile ca-bundle.pem cert.pem先行校验信任链 - 高并发下OCSP查询拖慢首字节?Nginx默认异步更新OCSP响应,无需担心阻塞;但resolver应避免配置不可靠DNS(如本地dnsmasq未启用TCP fallback),以防UDP截断引发超时
不复杂但容易忽略。只要证书合规、信任链完整、DNS可靠、时间准确,OCSP Stapling就能稳定降低TLS握手开销,让HTTPS更快更稳。











