我的证书是 COMODO 的,今天配置 Nginx 的时候突然想到我还没有启用 OCSP Stapling ,顺便启用一下。

COMODO 的 OCSP 服务器为 http://ocsp.comodoca.com

所以使用

openssl ocsp -issuer intermediate.pem -cert site.pem -no_nonce -text -url http://ocsp.comodoca.com

验证证书是否合法。
但是出现了下面的错误

Response Verify Failure
139647164676000:error:27069076:OCSP
routines:OCSP_basic_verify:signer certificate not found:ocsp_vfy.c:85:

COMODO 的 OCSP 服务器返回的 OCSP Response 没有提供 Certificate 信息。我直接在 NGINX 中配置
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /root/crt/chained.pem;

使用

openssl s_client -connect www.isthnew.com:443 -servername www.isthnew.com -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response"

检查 OCSP Stapling 是否开启,提示OCSP response: no response sent

最后在Jerry Qu的文章《从无法开启 OCSP Stapling 说起》中发现

从错误信息中可以得知,COMODO 的 OCSP Response 没有提供 Certificate 信息,导致无法验证其内容。进一步测试发现,对于这种情况,Nginx 直接忽略了 ssl_stapling_verify 参数,无论是否配置,都不执行 verify 操作。
经过测试,Let’s Encrypt 的 OCSP 服务也没有返回 Certificate,所以使用 Let’s Encrypt 证书,开启 OCSP Stapling 也无需配置 ssl_trusted_certificate

因此我删除NGINX中的 ssl_stapling_verifyssl_trusted_certificate 参数。再次检测 OCSP Stapling ,提示

OCSP response: 
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response

表示开启成功。

SSL LABS 中检测
OCSP stapling
Yes