解决Let's Encrypt证书OCSP域名无法访问解决办法

不少人会用免费的Let’s Encrypt SSL证书,但是由于国内访问Let’s Encrypt的OCSP节点会受到干扰的原因,用户在检查证书状态时受阻,从而导致访问被拖慢。

解决方案

  1. 切换至http,但是在https普及的情况下,这样做很不安全,不推荐
  2. 购买它家SSL证书,但是对于资金不多的学生来说也不推荐
  3. 启用OCSP stapling,令OCSP随证书一起发送给客户端,以此让客户端跳过自己去寻求验证的过程,提高 TLS 握手效率,推荐

开始实施

    注意,操作均在目录/data/cert/ocsp中执行

  1. 在/etc/hosts中添加
    23.32.3.72 ocsp.int-x3.letsencrypt.org

    用来临时解决OCSP被干扰的问题

  2. 获取待验证网站证书链上的所有证书,证书链一般由根证书、一个或多个中间证书、站点证书组成。这些证书均可在浏览器中导出,或者去各大CA官方下载,这里我提供获取Let’s Encrypt证书链的操作方法
    #根证书
    wget -O root.pem https://ssl-tools.net/certificates/dac9024f54d8f6df94935fb1732638ca6ad77c13.pem
    #中间证书
    wget -O intermediate.pem https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem
  3. 接下来我们将证书合成
    cat intermediate.pem > chained.pem
    cat root.pem >> chained.pem
  4. 获取证书的OCSP地址
    openssl x509 -in example.com.cer -noout -ocsp_uri

    Let’s Encrypt证书的输出应该为http://ocsp.int-x3.letsencrypt.org

  5. 合成证书
    #复制fullchain.cer
    cp /data/cert/example.com/fullchain.cer ./
    #合成证书
    openssl ocsp -no_nonce -issuer intermediate.pem -CAfile chained.pem -VAfile chained.pem -cert fullchain.cer -url http://ocsp.int-x3.letsencrypt.org -text
  6. 配置服务器
    在nginx站点的配置文件里添上那么一段

    #开启OCSP
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /data/cert/ocsp/chained.pem;
  7. 重启服务器,使用
    openssl s_client -connect example.com:443 -status -tlsextdebug < /dev/null 2>&1   | grep -i "OCSP response"

    检查当前站点OCSP stapling是否生效
    可能有缓存,可以多试几次,待出现

    OCSP response: 
    OCSP Response Data:
        OCSP Response Status: successful (0x0)
        Response Type: Basic OCSP Response

    字样即为开启成功

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注