OCSP 装订是什么
OCSP 装订(stapling)让服务端代替客户端去查证书吊销状态:服务端向 CA 的 OCSP 响应者请求一张带签名与时间戳的响应,缓存在本地,并在 TLS 握手中随证书一起下发。好处有两点,一是客户端不必直连 CA,省掉一次网络往返与隐私暴露,二是响应由服务端主动刷新,吊销状态生效更快。TLS 1.3 中该信息通过 CertificateStatus 扩展传递。
基本信息
| nginx 指令 | ssl_stapling on; ssl_stapling_verify on; |
|---|---|
| 信任链 | ssl_trusted_certificate 指向中间证书与根证书,不含服务器证书 |
| DNS 解析 | 必须配置 resolver,用于解析 OCSP 响应者地址 |
| 验证方式 | openssl s_client -status 查看 OCSP Response Status 与 Next Update |
| 前置条件 | 服务端需能出网访问 OCSP 响应者 |
典型使用场景
- 对外站点开启吊销检查:让客户端在不直连 CA 的前提下拿到最新吊销状态
- 降低外部依赖:避免每台终端各自去访问 CA 的 OCSP 响应者,减少出口流量与超时
- 排查吊销异常:证书已吊销但访问仍正常时,先确认装订响应里的 Cert Status 到底是哪个值
- 配合短期证书使用:有效期只有几十天时,装订能让状态变更更快同步到客户端
nginx 配置与验证
nginx 配置与验证
ssl_stapling on; # 开启装订
ssl_stapling_verify on; # 校验 OCSP 响应签名
ssl_trusted_certificate /etc/nginx/ssl/chain.pem; # 中间证书加根证书
resolver 223.5.5.5 1.1.1.1 valid=300s; # 解析 OCSP 响应者,必须配置
resolver_timeout 5s;
# 改完先语法检查再重载
# nginx -t && systemctl reload nginx查看装订响应
查看装订响应
openssl s_client -connect example.com:443 -servername example.com -status </dev/null 2>&1 | grep -A6 'OCSP Response'
# 响应长期为空时,原因通常只落在错误日志里
grep -i stapling /var/log/nginx/error.log输出逐列读法
| 字段 | 含义 | 正常与异常 |
|---|---|---|
| OCSP Response Status | 查询的整体结果 | successful 为正常,其它值均为异常 |
| Cert Status | 被查询证书的状态 | good 正常;revoked 表示证书已吊销 |
| This Update | 响应生成时间 | 距当前过久说明缓存未刷新 |
| Next Update | 下次更新时间 | 早于当前时间说明响应已过期 |
装订依赖对 OCSP 响应者的出网访问:内网隔离环境的典型现象是配置成功但响应长期为空,需要放行出口或改用内部 OCSP、CRL 方案。
CDN 场景要分清责任边界:边缘节点通常自己完成装订,源站再开一次没有收益,应到边缘侧确认实际下发的响应,而不是只看源站配置。
装订并非强制:客户端拿不到装订响应时会自己去查 OCSP,但很多实现查询失败即放行(软失败),吊销保障因此打折。关键业务应叠加短期证书与吊销应急预案。