本文最后更新于 2023-08-04,文章内容可能已经过时。

前言

  1. 网站一直以来都是使用的Let's Encrypt SSL证书,主要是因为Let's Encrypt浏览器兼容性较好,支持ACME自动化部署,支持泛域名证书等,但是今天起网站开始放弃Let's Encrypt证书,全站更换ZeroSSL提供的SSL证书。
  2. 由于Let's Encrypt证书的OCSP验证域名由于未知原因无法访问,不过网站前一阵子给服务器开启了OCSP装订,变相解决了部分浏览器访问缓慢的问题;
  3. 但是经过测试,发现有些浏览器,比如IOS端 Chromium 系的浏览器:Chrome、新版Egde等,就算服务器开启了OCSP装订,还是会去强制访问OCSP验证证书有效性,虽然超时时间只有3s,但是问题没有得到解决就很不爽;
  4. 不过也没有更好的解决办法了。
  5. 并且Let's Encrypt的X3根证书也将到期,之后会使用自己签发的根证书,虽然根证书更换后OCSP无法访问的问题会得到解决,但是新的根证书时间太短导致安卓7以下以及16年以前的一些设备没办法信任这个证书导致老设备的兼容性问题;
  6. 看来只能更换SSL证书来彻底解决该问题了。

b86c82a29262e140bbb5c7180272c5c0

根据群晖 Let's Encrypt 泛域名证书自动更新修改

修改文件

修改config

在 config 配置文件中加入

# The cert server has zerossl and letsencrypt
export CERT_SERVER=zerossl

# ZeroSSL registered email
export ACCOUNT_EMAIL="xxx@xxx.com"

修改cet-up.sh

cet-up.sh 大概从第32行开始

# ACME_SH_ADDRESS=`curl -L https://cdn.jsdelivr.net/gh/andyzhshg/syno-acme@master/acme.sh.address`
  version=`wget -qO- -t1 -T2 "https://api.github.com/repos/acmesh-official/acme.sh/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g'`
# ACME_SH_ADDRESS=`https://ghproxy.com/https://github.com/acmesh-official/acme.sh/archive/${version}.tar.gz`
  SRC_TAR_NAME=acme.sh.tar.gz
# curl -L -o ${SRC_TAR_NAME} ${ACME_SH_ADDRESS}
  curl -L -o ${SRC_TAR_NAME} https://ghproxy.com/https://github.com/acmesh-official/acme.sh/archive/${version}.tar.gz
acme.sh  --register-account  -m myemail@example.com --server zerossl

再去zeroSSL 注册一个账号,用你的域名DNS完成验证,然后把上面的那个 myemail@example.com 换成你自己的。
然后重新运行下任务计划里面的脚本就可以了。

7.0 的话,下面这个要更换
cet-up.sh 大概从第94行左右

 /usr/syno/etc/rc.sysv/nginx.sh reload
更换为
 /usr/syno/bin/synosystemctl reload nginx

总结

第一步,替换一下cert-up.sh 里面的ACME_SH_ADDRESS ,替换成最新的3.0+的下载地址
执行一下cert-up.sh update 更新ACME,会提示你注册
第二步,去zeroSSL 注册一个账号,然后到acme.sh 目录下 acme.sh --register-account -m 邮箱
最后再执行一下cert-up.sh update 应该就OK了,可以到zerossl 看到证书