不少人会用免费的Let’s Encrypt SSL证书,但是由于国内访问Let’s Encrypt的OCSP节点会受到干扰的原因,用户在检查证书状态时受阻,从而导致访问被拖慢。
解决方案
- 切换至http,但是在https普及的情况下,这样做很不安全,不推荐
- 购买它家SSL证书,但是对于资金不多的学生来说也不推荐
- 启用OCSP stapling,令OCSP随证书一起发送给客户端,以此让客户端跳过自己去寻求验证的过程,提高 TLS 握手效率,推荐
开始实施
注意,操作均在目录/data/cert/ocsp
中执行
1.在/etc/hosts中添加
1 | 23.32.3.72 ocsp.int-x3.letsencrypt.org |
用来临时解决OCSP被干扰的问题
2.获取待验证网站证书链上的所有证书
证书链一般由根证书、一个或多个中间证书、站点证书组成。这些证书均可在浏览器中导出,或者去各大CA官方下载,这里我提供获取Let’s Encrypt证书链的操作方法
1 | #根证书 |
3. 接下来我们将证书合成
1 | cat intermediate.pem > chained.pem |
4. 获取证书的OCSP地址
1 | openssl x509 -in example.com.cer -noout -ocsp_uri |
Let’s Encrypt证书的输出应该为http://ocsp.int-x3.letsencrypt.org
5. 合成证书
1 | #复制fullchain.cer |
6. 配置服务器 在nginx站点的配置文件里添上那么一段
1 | #开启OCSP |
7. 重启服务器,使用
1 | openssl s_client -connect example.com:443 -status -tlsextdebug </dev/null 2>&1 grep -i "OCSP response" |
检查当前站点OCSP stapling是否生效 可能有缓存,可以多试几次,待出现
1 | OCSP response: |
字样即为开启成功