Nginx的letsencrypt OCSP蠢蠢欲动

我已经用SSL和letsencrypt证书设置了nginx。 但是,我无法使OCSP勉强工作。

从我在网上find的,它应该使用下面的configuration,不幸的是它没有。 我的nginx虚拟主机看起来像这样:

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 

我在configuration中缺less什么?

我没有看到你的设置有什么问题,但是也许删除冗余resolver指令会产生不同的结果。

我也遇到了类似的情况,我甚至使用基于这篇文章的 openssltesting了OCSP装订:

 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实验室testing,它会失败。 然后我会用上面的命令testing几次,直到它工作,然后在SSL实验室重新testing。 我build议你给它一个镜头,如果第一次失败,给它几分钟,然后再试一次。 这个对我有用。

nginx在第一次使用相应的证书进行请求之后获取OCSP响应。

为了完全支持OCSP Must Staple 可能会更改此行为

在这之前,一个可靠的testing是连接多次,允许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会在(不可configuration的,afaik 60秒)超时后放弃,并在错误日志中记下。 如果您想马上知道,请尝试:

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