前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx开启OCSP以解决Let's Encrypt证书被DNS污染访问缓慢

Nginx开启OCSP以解决Let's Encrypt证书被DNS污染访问缓慢

原创
作者头像
ICU
修改2022-05-11 23:51:38
2.2K0
修改2022-05-11 23:51:38
举报
文章被收录于专栏:我和你

摘要

最近突然发现我的网站在苹果手机上Safari浏览器上第一次会访问会非常慢,但只要第一次访问后,后续的访问速度均不受影响...这就纳闷了,网站速度我都是优化过的,为什么会存在这种情况呢?困扰我许久,因为只有手机访问才这样,在电脑上访问速度都很快,完全没有头绪。

正文

一、问题研究

在多次尝试后,发现在Firefox和IE浏览器上能复现该问题,在ssl握手之前,Firefox会阻塞2s,IE浏览器会阻塞10s以上;

问题能复现就好解决了;

使用Charles进行抓包,发现使用IE打开网站的时候,会去请求ocsp.int-x3.letsencrypt.org域名进行证书验证,该域名无法访问从而导致访问速度变慢;

所以问题就出在SSL证书上面,我使用的证书全部是Let's Encrypt证书,其特点是免费、支持泛域名、并且脚本一键部署,但是Let's Encrypt证书的OCSP验证域名被DNS污染,无法解析到正确的IP地址,导致无法进行证书有效性验证。

Nginx OCSP stapling

由网站服务器去进行OCSP查询,缓存查询结果,然后在与浏览器进行TLS连接时返回给浏览器,这样浏览器就不需要再去查询了。别急,开启之前我们是不是得先知道如何查询是否开启了OCSP装订,自:新消息频道 不然捣鼓半天都不知道开启成功了没有可还行..

检测OCSP

有两种方法: 1.在线检测: 亚洲诚信的SSL检测工具 https://myssl.com/

手动检测:

代码语言:javascript
复制
openssl s_client -connect ffis.me:443 -servername ffis.me -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response"

开启 OCSP stapling

开启OCSP装订需要在网站的nginx配置文件中添加如下配置:

代码语言:javascript
复制
# 开启 OCSP Stapling,开启后服务器在TLS握手时发送事先缓存的OCSP响应,用户只需验证该响应的有效性而不用再向数字证书认证机构(CA)发送请求
ssl_stapling on;
# 启用或禁用服务器对OCSP响应的验证
ssl_stapling_verify on;
# 证书的签发机构的ca证书,我的Let's Encrypt是acme.sh自动获取的证书,ca证书目录为:/root/.acme.sh/ffis.me/ca.cer
ssl_trusted_certificate /usr/local/nginx/conf/ssl/ffis.me_ca.cer;
# 添加resolver解析OSCP响应服务器的主机名,valid表示缓存。这里添加是为了解决DNS污染问题。
resolver 8.8.8.8 8.8.4.4 223.5.5.5 valid=60s;
# 网络超时时间
resolver_timeout 2s;

添加后,重启nginx服务器,再次使用命令验证,OCSP装订是不是就已经开启了。

使用myssl验证,也提示OCSP已装订

Firefox、IE、Safari浏览器的访问也正常了

再次使用Charles进行抓包,发现浏览器会跳过OCSP验证

。之后我会在写一下关于开启OCSP的弊端和优化方案。

完结

以上就是Nginx开启OCSP以解决Let's Encrypt证书被DNS污染访问缓慢的内容,欢迎小伙伴们交流讨论。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 摘要
  • 正文
    • 一、问题研究
      • Nginx OCSP stapling
        • 检测OCSP
          • 开启 OCSP stapling
          • 完结
          相关产品与服务
          SSL 证书
          腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档