博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nginx之OCSP stapling配置
阅读量:6787 次
发布时间:2019-06-26

本文共 1953 字,大约阅读时间需要 6 分钟。

摘要: 正确地配置OCSP stapling, 可以提高HTTPS性能。

clipboard.png

什么是OCSP stapling?

OCSP的全称是Online Certificate Status Protocol,即在线证书状态协议。顾名思义,它是一个用于检查证书状态的协议,浏览器使用这个协议来检查证书是否被撤销。使用Chrome浏览器查看的证书详情,可以看到OCSP的查询地址:

clipboard.png

Fundebug使用的是的免费证书,其OCSP查询地址是,浏览器需要发送请求到这个地址来验证证书状态。

OCSP存在隐私性能问题。一方面,浏览器直接去请求第三方CA(Certificate Authority, 数字证书认证机构),会暴露网站的访客(Let's Encrypt会知道哪些用户在访问Fundebug);另一方面,浏览器进行OCSP查询会降低HTTPS性能(访问Fundebug会变慢)。

为了解决OCSP存在的2个问题,就有了OCSP stapling。由网站服务器去进行OCSP查询,缓存查询结果,然后在与浏览器进行TLS连接时返回给浏览器,这样浏览器就不需要再去查询了。这样解决了隐私性能问题。

检测OCSP stapling

能够对开启HTTPS的网站的SSL配置进行全面分析,可以检测OCSP stapling的状态。

www.fundebug.com进行检查,会发现OCSP stapling是开启的:

clipboard.png

kiwenlau.com进行检查,会发现OCSP stapling是关闭的:

clipboard.png

配置OCSP stapling

在查询Nginx日志时,我发现了这样的报错信息:

2018/02/27 02:58:11 [warn] 10#10: no resolver defined to resolve ocsp.int-x3.letsencrypt.org while requesting certificate status, responder: ocsp.int-x3.letsencrypt.org, certificate: "/etc/letsencrypt/live/www.fundebug.com/fullchain.pem"

可知,是属性木有配置导致的。resolver属性用于指定DNS服务器地址, OCSP查询地址ocsp.int-x3.letsencrypt.org需要解析为IP地址。

根据Nginx文档,最好使用本地DNS服务,可以防止DNS欺骗(DNS spoofing)。使用公共的DNS服务,例如Google Public DNS(8.8.8.8和8.8.4.4 ),都存在安全隐患。

To prevent DNS spoofing, it is recommended configuring DNS servers in a properly secured trusted local network.

因此,resolver最好配置为127.0.0.1,即本地DNS服务:

resolver 127.0.0.1;

由于本地并没有DNS服务,因此配置resolver之后Nginx会出现以下报错:

2018/02/28 15:35:47 [error] 8#8: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.1:53

这时应该在本地运行一个DNS服务,例如dnsmasq。我们所有服务包括Nginx都运行在Docker里面,因此dnsmasq直接运行在Docker里面就好了,这样省去了安装与配置的步骤:

sudo docker run -d --name=dnsmasq --net=host --cap-add=NET_ADMIN andyshinn/dnsmasq:2.75 --log-facility=-

Nginx的OCSP stapling完整配置如下:(此处省略了其他无关的配置选项)

http{    resolver 127.0.0.1;    server    {        ssl_stapling on;        ssl_stapling_verify on;        ssl_trusted_certificate /etc/letsencrypt/live/www.fundebug.com/chain.pem;    }}

参考

  • [Nginx resolver vulnerabilities allow cache poisoning attack]()

clipboard.png

版权声明:

转载时请注明作者Fundebug以及本文地址:

你可能感兴趣的文章
spring 技术内幕阅读笔记 - spring mvc
查看>>
6月份值得一看的 Java 技术干货!
查看>>
条件随机场---条件随机场的定义与形式
查看>>
机器学习基础---学习算法
查看>>
sturts2 标签
查看>>
Linux守护进程(init.d和xinetd)
查看>>
提问的智慧
查看>>
驰骋工作流引擎设计系列06 保存草稿设计
查看>>
软件开发人员的“七重苦”
查看>>
使用java基础反射访问私有域、方法和构造函数
查看>>
Android:解决列表滚动时背景色变黑的方法
查看>>
(转)十月百度,阿里巴巴,迅雷搜狗最新面试七十题
查看>>
freeglut 2.8.1 windows 8 x64 配置
查看>>
apache 配置虚拟主机
查看>>
FTP 的 被动传输模式
查看>>
使用 hydra 破解路由器密码
查看>>
小黑小波比.sql语句查询0:全部;1:类型A;2:类型B
查看>>
@PathVariable 包含斜杠
查看>>
思达报表工具Style Report基础教程—参数化查询
查看>>
为什么用ls和du显示出来的文件大小有差别?
查看>>