内网私有CA部署HTTPS时,需通过手动获取OCSP响应并缓存至本地文件,配合ssl_stapling_file、ssl_stapling_verify等指令启用可信吊销验证。

在内网使用私有 CA 部署 HTTPS 时,标准 OCSP Stapling 往往失效——因为客户端无法访问公网 CA 的 OCSP 服务器,而 Nginx 默认也不支持对接私有 OCSP 响应器。但延迟问题依然存在:客户端会尝试查询(失败或超时),导致 TLS 握手卡顿甚至降级。解决核心不是“绕过验证”,而是让 Nginx 能真正为私有证书提供可信、可验证的吊销状态响应。
确认私有 CA 是否支持 OCSP 响应器
这是前提。很多自建 CA(如 OpenSSL CA、Easy-RSA、CFSSL)默认不启用 OCSP 服务。需检查:
- CA 配置中是否启用了
ocsp模块或独立 OCSP responder 进程 - 是否有公开可访问的 OCSP URL(如
http://ocsp.internal-ca.local),且该地址能被 Nginx 服务器解析并连通 - OCSP 响应器是否使用与 CA 根证书匹配的签名密钥,并正确配置了
nextUpdate时间窗口
定制 ssl_trusted_certificate 与证书链结构
私有环境下,ssl_trusted_certificate 不能复用公网 CA 的 bundle。必须提供完整信任链用于验证 OCSP 响应签名:
- 该文件应包含:私有根 CA 证书 + 所有中间 CA 证书(按从根到中间顺序拼接)
- 不能包含服务器证书本身;也不能混入任何公网 CA 证书,否则 Nginx 验证时可能选错信任锚
- 建议单独生成专用文件,例如
/etc/nginx/ssl/internal-ca-trust.pem,并通过openssl verify -CAfile手动校验其有效性
手动获取并缓存 OCSP 响应(推荐方式)
因私有 OCSP 服务通常无公网 DNS 或受防火墙限制,Nginx 内置的自动 stapling(依赖 resolver)大概率失败。更可靠的做法是主动拉取 + 文件缓存:
- 使用
openssl ocsp命令定期向私有 OCSP 地址发起请求,例如:openssl ocsp -issuer ca.crt -cert server.crt -url http://ocsp.internal-ca.local -respout /var/lib/nginx/ocsp/server.ocsp -text - 将响应写入固定路径,并在 Nginx 中通过
ssl_stapling_file指向它 - 配合 cron 每 4 小时更新一次(注意
nextUpdate时间,避免缓存过期)
关键配置项与容错设置
以下指令需同时存在,缺一不可:
-
ssl_stapling on;—— 启用 stapling 功能 -
ssl_stapling_verify on;—— 强制校验响应签名和有效期(防止伪造) -
ssl_stapling_file /var/lib/nginx/ocsp/server.ocsp;—— 显式指定本地缓存响应文件 -
ssl_trusted_certificate /etc/nginx/ssl/internal-ca-trust.pem;—— 仅用于 OCSP 签名验证 -
ssl_certificate /etc/nginx/ssl/server.fullchain.pem;—— 正常证书链(含服务器证书+中间证书)
无需配置 resolver,因不走自动查询路径;也无需 ssl_stapling_cache_timeout,文件内容本身已含有效期控制。


















