该指令到底是做什么的ssl_stapling_verify
?它会检查答案的签名是否正确吗? nginx 官方文档对此的解释非常模糊:
https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_stapling_verify
启用或禁用服务器对 OCSP 响应的验证。
为了使验证正常工作,应使用 ssl_trusted_certificate 指令将服务器证书颁发者的证书、根证书和所有中间证书配置为受信任。
答案1
我在 Nginx 源代码中找到了该文件ngx_event_openssl_stapling.c#L660:
OCSP_basic_verify(basic, chain, store,staple->verify ? OCSP_TRUSTOTHER :OCSP_NOVERIFY
如果配置`ssl_stapling_verify`值为on,则`staple->verify`将为真,接下来函数`OCSP_basic_verify`将使用`OCSP_TRUSTOTHER`参数进行验证。
然后,我发现OCSP_basic_verify库中的函数openssl
,它说:
然后,如果标志包含 OCSP_NOVERIFY 或者在证书中找到签名者证书并且标志包含 OCSP_TRUSTOTHER,则该函数已经返回成功。
更多详情请参见此处:https://meto.cc/article/what-exactly-did-ssl_stapling_verify-verify
答案2
维基百科说, “OCSP 装订,正式名称为 TLS 证书状态请求扩展,是用于检查 X.509 数字证书撤销状态的在线证书状态协议 (OCSP) 的替代方法。它允许证书出具者通过以下方式承担提供 OCSP 响应所涉及的资源成本:将 CA 签名的带时间戳的 OCSP 响应附加(“装订”)到初始 TLS 握手中,从而无需客户端联系 CA“。
强调已添加。
该指令可打开或关闭 OCSP 装订的“替代方法”。默认情况下,未启用 OCSP 装订。您可以使用以下命令启用它
ssl_stapling_verify on;