Apache离线OCSP验证需配置SSLOCSPEnable on、SSLOCSPOverrideResponder指向内网DER响应文件,并设SSLOCSPResponseTimeSkew 300、SSLOCSPResponseMaxAge 604800、SSLOCSPUseRequestNonce off,配合预获取有效OCSP响应及本地HTTP服务托管。

在离线或隔离网络环境中,标准 OCSP 查询无法访问公网 CA 的 OCSP 响应器,导致 SSLOCSPEnable on 直接失败或超时。此时不能依赖实时在线验证,而应使用 SSLOCSPOverrideResponder 配合本地缓存的 OCSP 响应(stapled response),实现“离线但可信”的证书状态校验。
核心逻辑:用预获取的 OCSP 响应替代实时查询
SSLOCSPOverrideResponder 本身不提供离线能力,它的作用是强制 Apache 使用指定 URL 作为 OCSP 响应源,而非从证书的 Authority Information Access(AIA)扩展中动态读取。在隔离网中,这个“指定 URL”需指向一个本地 HTTP 服务(如 Nginx 或简单 Python HTTP server),该服务静态返回你预先获取并签名有效的 OCSP 响应文件(DER 格式)。
关键点:这不是跳过校验,而是把校验行为从“向公网 CA 发起请求”变为“向内网可信服务验证已缓存响应”。
配置前必须完成的三件事
-
提前获取有效 OCSP 响应:在仍可联网的环境(如跳板机)中,用
openssl ocsp向 CA 的 OCSP 服务器发起查询,保存 DER 格式响应(例如ocsp-response.der)。命令示例:openssl ocsp -issuer ca.crt -cert server.crt -url http://ocsp.example-ca.com -respout ocsp-response.der -
部署本地响应服务:将
ocsp-response.der放入内网 Web 服务的静态目录(如/var/www/ocsp/),确保可通过 HTTP 访问,例如http://ocsp.internal/ocsp-response.der。注意该服务无需 HTTPS,但需保证传输不被篡改(建议配合内网 TLS 或文件完整性校验)。 - 确认证书含完整链且未吊销:离线环境下无法刷新状态,所以获取的 OCSP 响应有效期必须覆盖整个使用周期(通常 CA 提供 4–7 天有效期),且对应证书在此期间未被 CA 吊销。
Apache 中的关键配置项
在启用 SSLEngine on 的 <virtualhost></virtualhost> 块中添加:
SSLOCSPEnable on<br> SSLOCSPOverrideResponder http://ocsp.internal/ocsp-response.der<br> SSLOCSPResponseTimeSkew 300<br> SSLOCSPResponseMaxAge 604800<br> SSLOCSPUseRequestNonce off
说明:
- SSLOCSPOverrideResponder 指向你内网托管的 DER 文件地址;
- SSLOCSPResponseTimeSkew 宽容服务器时间偏差(秒),隔离网时间易不同步,建议设为 300(5 分钟);
- SSLOCSPResponseMaxAge 设为 OCSP 响应自身的 nextUpdate 时间(单位秒),不可超过它;
- SSLOCSPUseRequestNonce off 必须关闭,因本地服务不支持 nonce 签名验证。
验证是否生效
重启 Apache 后,执行:curl -I https://your-domain.com
检查响应头中是否含 OCSP-Stapling: good(或 revoked/unknown);
同时查看 Apache 错误日志:
- 成功加载会记录 OCSP response loaded from ...;
- 若路径错误或响应格式非法,会报 OCSP response invalid or expired。


















