Let's Encrypt 可能是最著名的免费 SSL 证书服务商。然而,其根证书(DST Root X3)将于 2021 年 9 月 1 日过期。自 2021 年 1 月 11 日起,Let's Encrypt 的 API 会默认使用新的根(ISRG Root X1)签发证书。而新根大概于 2016 年才引进,兼容性就不太乐观了。你可以选择修改参数再用旧根撑一阵,或者另寻其他免费证书。
比如 BuyPass,早就支持 ACME 标准,提供免费 SSL 证书申请。最近,我在 acme.sh wiki 看到,ZeroSSL 也开始提供类似服务。两家都支持 ACME,也就是说,你不需要更换现有客户端(Cerbot、acme.sh 等),只需作少许改动即可切换至新的 CA,简单签发,自动续期。
BuyPass
BuyPass 提供的证书,有效期长达 180 天。每张证书可提供 5 个域名。不支持泛域名。支持 ECC 证书,但根证书仍然是 RSA。
使用 acme.sh 签发 BuyPass 证书需要指定 --server
参数为 https://api.buypass.com/acme/directory
。
首先需要注册账户(将 me@example.com
换成你的邮箱):
acme.sh --server https://api.buypass.com/acme/directory \
--register-account --accountemail me@example.com
然后便可以像签发其他 CA 证书一样签发 BuyPass CA 的证书,只是多带上 --server https://api.buypass.com/acme/directory
参数,以及设定更长的续期天数:
acme.sh --server https://api.buypass.com/acme/directory \
--issue -d example.com -d www.example.com ..... \
--days 170 \
--dns dns_cf
手动 renew 的时候不需要再带上 --server
参数。
如果你设定了 CAA 记录,请允许 host buypass.no
或 buypass.com
。
ZeroSSL
上次博客提到 ZeroSSL 的时候还只是 Let's Encrypt 的网页工具,现在已经自己提供证书服务了。你可以在它家网站上申请及管理证书,或者接着用 ACME 客户端,本文仍然以 acme.sh 为例。ZeroSSL 的 --server
参数为 zerossl
。
与 BuyPass 相似,首次使用需注册:
acme.sh --register-account -m myemail@example.com --server zerossl
签发时带上参数 --server zerossl
:
acme.sh --server zerossl \
--issue -d example.com \
--dns dns_cf
手动 renew 不需带上 --server
参数。
后面会看到,签发的证书归根究底是 Sectigo 提供的,因此如果你设置了 CAA 记录,添加所需 host comodoca.com
、 usertrust.com
、trust-provider.com
或 sectigo.com
(任选其一)。
演示与兼容性
我已经部署了相应的演示站,方便大家查看证书信息。方便起见,我仅签发了 RSA 证书。
BuyPass:https://buypass.demo.shansing.net/
ZeroSSL:https://zerossl.demo.shansing.net/
可用《HTTPS cipher suite 配置与检测》介绍的 MySSL 工具在线检测浏览器兼容性。
大体上,BuyPass 的兼容性略逊一筹,不支持 Android 4.2 及以下版本等,但应该会比 Let's Encrypt 的新根好;ZeroSSL 仰赖 Sectigo 兼容性最佳,而证书链稍长。有意思的是,MySSL 检测出 ZeroSSL/Sectigo 的证书不支持 iOS 9 及以下版本、OS X 10.11 及以下版本,是否误报我一时也无法验证。
你的 ssl demo 已经过期了。 看不到效果了。 而我新申请的 zerossl 提示 stc错误,透明度问题。。
ZeroSSL 的服务器连接感觉不稳定。我这主站本来也是用 ZeroSSL 的,硬是自动续费到过期都没成功,我才又手动换成 Let's Encrypt 的。