Let's Encrypt证书:国内服务器无法申请?国外服务器访问缓慢?你需要OCSP装订

前言

最近,有V2EX的网友发现地处国内的服务器无法正常申请和续期Let's Encrypt的免费证书。最后查找原因,是因为Let's Encrypt的一个OSCP域名ocsp.int-x3.letsencrypt.org被GFW污染,解析到了以31开头的FaceBook的IP或者其他被墙IP,而不是使用Akamai CDN的Let's Encrypt的OSCP服务器上。

nslookup ocsp.int-x3.letsencrypt.org 223.5.5.5
服务器:  public1.alidns.com
Address:  223.5.5.5
非权威应答:
名称:    a771.dscq.akamai.net
Addresses:  2600:1417:76::6874:f3cb
          2600:1417:76::17d2:d741
          74.86.17.48
Aliases:  ocsp.int-x3.letsencrypt.org
          ocsp.int-x3.letsencrypt.org.edgesuite.net

ping 74.86.17.48
正在 Ping 74.86.17.48 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。
74.86.17.48 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),

先让我们了解一下什么是OCSP。
在线证书状态协议(Online Certificate Status Protocol)是一个用于获取X.509数字证书撤销状态的网际协议。浏览器在访问一个https站点时,会先向CA的OCSP服务器发起请求,查询该证书是否有效,是否被吊销。当OCSP出现问题时,会有两个影响:

  1. 服务器端无法正常申请或续期SSL证书。
  2. 客户端浏览速度缓慢,尤其是Safari和IE浏览器,首次打开站点白屏的时间会大大增加。浏览器验证OCSP状态并超时需要比较长的时间,尽管OCSP请求超时还是认为证书有效,但还是会造成浏览体验大大降低。Chrome浏览器基本上不会受影响。

那我们怎么解决这个问题呢?我们可以使用OCSP装订。
OCSP装订(OCSP Stapling),正式名称为TLS证书状态查询扩展,可代替在线证书状态协议(OCSP)来查询X.509证书的状态。服务器在TLS握手时发送事先缓存的OCSP响应,用户只需验证该响应的有效性而不用再向数字证书认证机构(CA)发送请求。

网上关于Let's Encrypt启用OCSP装订的文章比较少,Hostloc也有MJJ在找教程。所以,下面我就会简单写一下国内服务器申请Let's Encrypt免费证书+Nginx服务器开始OCSP装订的步骤~

操作步骤

申请Let's Encrypt泛域名证书

下面是利用DNS API方式,使用acme.sh申请Let's Encrypt泛域名证书的步骤。DNS提供商为DNSPOD,其他主流的DNS提供商也大都能使用这种方法申请证书。

  1. 国内服务器需要先修改hosts以避免DNS污染,国外服务器则不需要。在hosts中添加一条ocsp.int-x3.letsencrypt.org的记录,将其指向下面中的一个,香港的Akamai CDN,国内访问速度不错:

    • 175.45.42.217
    • 175.45.42.209
  2. 安装acme.sh,官方文档在此 curl https://get.acme.sh | sh
  3. 在DNS控制台中申请一个API Key,记下备用。支持此方法的DNS见官方文档
  4. 输入API Id和Key 以DNSPOD为例

    export DP_Id="15**04"
    export DP_Key="ed512e50286f*********9326ec760d3d"
  5. 输入域名,申请证书 acme.sh --issue --dns dns_dp -d example.com -d *.example.com

稍微一等,Let's Encrypt泛域名证书就申请好啦!而且acme.sh会在域名过期前几天续期证书。下面讲如何配置证书,以及Nginx开启OCSP装订。

Nginx开启OCSP装订

申请到的证书存放在~/.acme.sh/example.com文件夹下,这个文件夹下面会肯定有这两个文件:

  • fullchain.cer
  • example.com.key

我们就要用到这两个文件,修改N滚下配置,并开启OCSP。
编辑Nginx配置文件,在server大括号中加入以下内容,并删除冲突的内容:

ssl_certificate /[用户名]/.acme.sh/xmgspace.me/fullchain.cer; #证书路径
ssl_certificate_key /[用户名]/.acme.sh/xmgspace.me/example.com.key; #私钥路径
ssl_stapling on; #开启OCSP
ssl_stapling_verify on; #开启OCSP验证
ssl_trusted_certificate /[用户名]/.acme.sh/xmgspace.me/fullchain.cer; #验证证书路径

编辑完成保存之后重启Nginx。

这样,OCSP装订就成功启用啦!要验证是否启用了OCSP,可以在SSL Lab中进行测试。操作中遇到什么问题,欢迎在评论区留言哦!

你看到的文字是我在心态崩了的状态下写下的文字...本来本文的全文已经完成,正当我按下Ctrl+S保存准备复制到博客发表的时候,电脑又又又蓝屏了...当我打开电脑,“0字符” !!! 血的教训,所以,电脑出了问题一定要第一时间修!一定要多做备份!以后的文章大都是用在线编辑器敲出来的了,不会本地编辑再上传了...
~~End Of File~~

本文永久链接:https://blog.xmgspace.me/archives/lets-encrypt-ocsp.html

本文文章标题:Let's Encrypt证书:国内服务器无法申请?国外服务器访问缓慢?你需要OCSP装订

本站欢迎转载与引用~但您需要注明文章标题与链接,并表明转载/引用自Xiaomage's Blog。

授权协议:署名-非商业性使用-相同方式共享 4.0 国际(CC BY 4.0)

标签:服务器 , SSL证书 , Let's Encrypt证书 , OCSP装订

还没有人评论哦,还不快抢沙发~

添加新评论

i_f01.pngi_f02.pngi_f03.pngi_f04.pngi_f05.pngi_f06.pngi_f07.pngi_f08.pngi_f09.pngi_f10.pngi_f11.pngi_f12.pngi_f13.pngi_f14.pngi_f15.pngi_f16.pngi_f17.pngi_f18.pngi_f19.pngi_f20.pngi_f21.pngi_f22.pngi_f23.pngi_f24.pngi_f25.pngi_f26.pngi_f27.pngi_f28.pngi_f29.pngi_f30.pngi_f31.pngi_f32.pngi_f33.png