网站一直以来都是使用的Let's Encrypt SSL证书,主要是因为Let's Encrypt浏览器兼容性较好,支持ACME自动化部署,支持泛域名证书等,但是今天起网站开始放弃Let's Encrypt证书,全站更换ZeroSSL提供的SSL证书。
为什么放弃Let's Encrypt证书?
由于Let's Encrypt证书的OCSP验证域名由于未知原因无法访问,不过网站前一阵子给服务器开启了OCSP装订,变相解决了部分浏览器访问缓慢的问题;
但是经过测试,发现有些浏览器,比如IOS端 Chromium 系的浏览器:Chrome、新版Egde等,就算服务器开启了OCSP装订,还是会去强制访问OCSP验证证书有效性,虽然超时时间只有3s,但是问题没有得到解决就很不爽;
不过也没有更好的解决办法了。
并且Let's Encrypt的X3根证书也将到期,之后会使用自己签发的根证书,虽然根证书更换后OCSP无法访问的问题会得到解决,但是新的根证书时间太短导致安卓7以下以及16年以前的一些设备没办法信任这个证书导致老设备的兼容性问题;
看来只能更换SSL证书来彻底解决该问题了。
为什么选择ZeroSSL?
经过大佬Luminous推荐,ZeroSSL家的SSL证书可支持ACME自动化部署,并且支持申请泛域名证书,所以准备考虑切换到这家CA的证书;
ZeroSSL的证书之前也听说过,没有考虑的原因是之前我点开价格后发现免费用户只能签3个单域名证书,其他的类型证书都是收费的(贫穷限制了我的想象力);
不过也怪我研究不够深入,在ACME文档的介绍中发现,通过ACME自动部署的方式,可以进行无限制的签发普通域名、多域名证书、甚至通配证书等,并且可以acme.sh脚本官方也支持直接将CA切换到ZeroSSL,直接一键就可以完成证书的切换!
既然更换证书的成本这么低了,那何乐而不为呢?
接下来就准备直接将acme.sh的证书由默认的Let's Encrypt CA切换到ZeroSSL CA;
更换ACME.sh的CA为ZeroSSL
这里我的证书是使用acme.sh统一管理的,并且acme.sh官方也支持切换CA到ZeroSSL;
acme.sh
的安装可参考官方文档:https://github.com/acmesh-official/acme.sh/wiki/How-to-install
下文主要是通过DNS的方式进行证书的签发,该方式在签发证书的时候会自动在dns解析中添加验证域名需要的解析,并且在验证完毕后会自动删除解析;acme.sh
目前支持 cloudflare, dnspod, godaddy 以及 ovh 等数十种解析商的自动集成
配置很简单,只需将自己dns服务商提供的dnsapi配置到环境变量中即可
由于之前在使用Let's Encrypt的时候已经配置过,在此就不进行过多阐述dnsapi
具体配置可参考官方文档:
传送门:https://github.com/acmesh-official/acme.sh/wiki/dnsapi
下面将acme.sh
申请的证书由默认的Let's Encrypt更改为ZeroSSL
1.访问账户注册页面注册一个ZeroSSL账户
传送门:https://app.zerossl.com/signup
2.获取账户的EAB凭证,用来注册acme帐户
传送门:https://app.zerossl.com/developer
点击生成会生成你的eab-kid和eab-hmac-key,复制保存下来;
3.注册ACME帐户
acme.sh --register-account --server zerossl \
--eab-kid 你的eab-kid \
--eab-hmac-key 你的eab-hmac-key
4.切换默认CA
接下来你就可以添加--server zerossl
指令来签发新的证书了,如下:
acme.sh --server zerossl --issue --dns dns_dp -d ffis.me -d *.ffis.me
或者直接切换acme.sh的默认CA为ZeroSSL
acme.sh --set-default-ca --server zerossl
5.签发新证书,这里我签发的是泛域名证书
acme.sh --issue --dns dns_dp -d ffis.me -d *.ffis.me
签发完毕后证书会保存在/root/.acme.sh
目录下,我们一般不直接访问此目录
6.安装新证书
acme.sh --install-cert -d ffis.me \
--key-file /usr/local/nginx/conf/ssl/ffis.me.key \
--fullchain-file /usr/local/nginx/conf/ssl/ffis.me.crt \
--reloadcmd "systemctl force-reload nginx.service"
以上命令会将证书复制到nginx指定目录下,并且强制重新加载nginx,并且以后每次自动续期都会自动执行以上逻辑;
安装完毕后,我们修改网站nginx配置文件中ssl证书文件地址为上面的安装地址即可。
经过如上操作,我的SSL证书就更换为ZeroSSL家的证书了!
这样OCSP无法访问的问题也就迎刃而解了,当然也可以自己去配置OCSP装订和手动预缓存,来提高加载速度
刚跑acme脚本一直不成功,看了日志才发现,acme从lets encrypt 切换到zerossl了,需要注册账号,顺便收了一下zeroSSL是什么,就到这来了
顺便提一下,不需要跑官网注册账号,amce脚本就行
acme.sh --register-account -m MyMail艾特Gmail.com --server zerossl
切到zerossl后let's Encrypt的CA就换了;
不过感觉zerossl用着还可以,就懒得切回去了;
命令行适合未注册账户的时候直接注册账户,我已经注册过账户所以就直接用Key做关联就行了
现在LE r3 ocsp还是很快的
我发完文章Let's Encrypt就换CA了,你说气不气
感谢分享
Let's Encrypt 也用了不少时间,不过期间总有一些小问题。
后来干脆花钱找代理买了 AlphaSSL 的通配符证书。ZeroSSL 现在也能整通配符那等过期了之后也换过来哈哈。
这个好耶
不过现在用 acme.sh 貌似无法申请多域名证书
可以申请泛域名证书,我用的证书都是泛域名的
不能申请多个泛域名
多执行几次命令
Sectigo的Root嘛...
太常见啦...
如果是三个月有效期...完全没有吸引力的说...(ACME什么的完全不懂的说...哭)
现在用的是SECOM的DV证书...
Sectigo买了一张OV的qwq...
通配符的话...确实没有办法的说...不过目前还用不到~就无所谓啦
(又及:雪花效果好可爱!)
ACME就是自动化部署的简称,这种证书虽然有效期只有三个月,但是使用ACME只需要进行一次签发,后续的续费完全是自动化的,并且是通配符证书,签发一次所有子域名都可以用同一个证书,实际使用起来还是很方便的
咱买了两张OV通配符证书(https://mps.is,https://ccdi.is),推荐一下QuantumCA,证书很便宜的说
阿里云免费的挺好用的,哈哈,不用3个月就更新
其实这种证书主要优点是,支持ACME自动化部署,虽然是3个月有效期,但是续期过程是自动化的,并且是通配符证书,签发一次所有子域名都可以用同一个证书,实际使用起来还是很方便的。
免费的只能20张,又不能通配符,太麻烦
Comodo 的根签出来的啊,这个靠谱,有空研究一下
假装看懂了