Nginx letsencrypt OCSP 绑定

Nginx letsencrypt OCSP 绑定

我已经使用 SSL 和 letsencrypt 证书设置了 nginx。但是我无法让 OCSP 绑定正常工作。

从我在网上找到的信息来看,它应该使用以下配置,但不幸的是,它不行。我的 nginx vhost 如下所示:

server {

    ...

    # SSL Certificates
    ssl_certificate         /etc/letsencrypt/live/domain.com/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/domain.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;

    # Allow Nginx to send OCSP results during the connection process
    ssl_stapling on;
    ssl_stapling_verify on;

    resolver $DNS-IP-1 $DNS-IP-2 valid=300s;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 10s;

    ...
}

当我使用扫描我的域名时https://www.ssllabs.com报告称:

OCSP stapling   No

我的配置中缺少什么?

答案1

我认为您的设置没有任何问题,但也许删除冗余resolver指令会产生不同的结果。

我也遇到过类似的情况,我甚至测试过openssl基于本文

echo QUIT | openssl s_client -connect www.yourdomain.com:443 -servername www.yourdomain.com -status 2> /dev/null | grep -A 17 'OCSP response:' | grep -B 17 'Next Update'

没有输出意味着 OCSP 装订尚未起作用。

据我观察,如果我重新启动/重新加载 Nginx,然后立即使用 SSL Labs 进行测试,它会失败。然后我会使用上述命令测试几次,直到成功,然后在 SSL Labs 上重新测试。我建议您试一试,如果第一次失败,请等待几分钟再试一次。对我来说,这种方法很有效。

答案2

nginx 正在获取 OCSP 响应第一次使用相应证书提出请求。

这种行为可能会改变为了全力支持OCSP Must Staple

在此之前,一个可靠的装订测试是多次连接,让 nginx 有时间在其间获取签名的响应。

for i in 3 0; do openssl s_client -connect example.com:443 -servername example.com -status </dev/null 2>&1 | grep -A 13 OCSP; sleep $i; done

OCSP 响应器确实会失败 - 经常失败。如果它们很慢,nginx 会在超时(不可配置,据我所知 60 秒)后放弃并在错误日志中记录。如果你想立即知道,请尝试:

openssl x509 -noout -text -in example.crt | grep "OCSP - URI" | cut -d: -f2,3 | grep -io "^http://[-.a-z0-9]*$" | xargs curl -D-

相关内容