在很早的一篇文章中《使用acme.sh脚本申请Let’s Encrypt 泛域名SSL证书》分享过使用acme.sh
申请Let’s Encrypt 泛域名SSL证书,随着acme.sh
作者的不断更新,功能越来越强大,现在acme.sh
已经支持ZeroSSL、BuyPass、Let’s Encrypt等多种不同证书。
据传Let’s Encrypt OSCP服务器被墙,导致国内首次访问使用Let’s Encrypt SSL的站点加载速度过慢,目前尚不清楚解决没有(有人说Let’s Encrypt已经更换OSCP服务器解决了该问题,xiaoz尚未验证)。总之多一个选择多一条路,这篇文章分享下另一个SSL服务提供商ZeroSSL
关于ZeroSSL
ZeroSSL在2016年就已经推出,和Let’s Encrypt一样,证书有效期只有90天,支持泛域名SSL证书。和Let’s Encrypt不同的是,ZeroSSL API没有速率限制,不存在同一IP多次申请SSL证书被限制的问题,ZeroSSL还提供了WEB界面可在后台管理SSL证书,相比Let’s Encrypt功能更加丰富。
在acme.sh
的文档中提到,acme.sh默认server使用Let’s Encrypt,将在2021/08/01发布v3版本,默认server将更改为ZeroSSL(参考:https://github.com/acmesh-official/acme.sh/wiki/Change-default-CA-to-ZeroSSL),可以看出ZeroSSL越来越流行,acme.sh
也在向ZeroSSL靠拢。
安装acme.sh
acme.sh
实现了 acme 协议,可以帮助你快速申请SSL证书,自动更新证书等操作,极大简化操作步骤。在使用之前,我们需要先安装,以下命令均在Linux系统完成。
#安装acme.sh
curl https://get.acme.sh | sh
是的,只需要简单一行命令即可安装,安装完成后,可输入acme.sh -v
查看当前版本。
[root@qcloud-cd ~]# acme.sh -v
https://github.com/acmesh-official/acme.sh
v2.9.0
将acme.sh server更改为ZeroSSL
acme.sh
2.x版本默认使用Let’s Encrypt作为服务提供商,我们可以通过以下命令,将其更换为ZeroSSL:
#更换默认服务商为ZeroSSL
acme.sh --set-default-ca --server zerossl
配置DNS API
SSL证书验证可通过DNS验证、文件验证等多种方式,为了方便多个域名申请以及后续证书更新,推荐使用DNS API方式,不过在使用前需要先进行设置。
如果使用的DNSPOD(国内版),命令为:
export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"
密钥可通过:https://console.dnspod.cn/account/token/apikey 获取。
如果使用的华为云解析(国内版),命令为:
export HUAWEICLOUD_Username=<Your Username> # Usually hwxxxxxx
export HUAWEICLOUD_Password=<Your Password>
export HUAWEICLOUD_ProjectID=<A Project ID>
- HUAWEICLOUD_Username:华为云用户名
- HUAWEICLOUD_Password:华为云密码
- HUAWEICLOUD_ProjectID:可通过我的凭据获取
acme.sh
支持多个DNS服务商,这里不在一一列举,可通过官方文档:https://github.com/acmesh-official/acme.sh/wiki/dnsapi进行查看设置。
ZeroSSL使用说明
申请证书之前,建议先在ZeroSSL官方网站:https://zerossl.com/注册账号,方便与acme.sh
申请的证书进行绑定于关联。
另外注意,如果您通过ZeroSSL官网在线申请SSL证书,免费账户是有3个域的额度限制的,但通过acme.sh
申请则没有这个限制,所以建议使用acme.sh
进行申请,简单方便。
acme.sh申请ZeroSSL泛域名SSL证书
首次使用需要先注册ZeroSSL账户(参考上一步),如果已经注册,下面的命令会自动关联账户,命令如下(myemail@example.com
改成你自己的ZeroSSL邮箱,不要乱填):
acme.sh --register-account -m myemail@example.com --server zerossl
以xiaoz.me
域名为例,该域名使用华为云解析,我已经在上一个步骤中设置好华为云解析DNS API,现在可以输入命令直接申请:
#申请ZeroSSL泛域名SSL证书
acme.sh --dns dns_huaweicloud --issue -d xiaoz.me -d *.xiaoz.me
如果申请过程中没有报错,就可以将SSL证书拷贝到任何想要的位置进行使用,命令如下:
acme.sh --installcert -d xiaoz.me \
--key-file /data/ssl/xiaoz.me.key \
--fullchain-file /data/ssl/xiaoz.me.crt
上述命令将xiaoz.me
SSL证书导出到了/data/ssl
目录。
部署于查看
关于如何部署SSL证书这篇文章不做介绍,建议网上搜索。部署完毕后我们可通过浏览器查看到证书信息,如下图。
最后
ZeroSSL几乎继承了Let’s Encrypt所有特性,而且还支持WEB管理证书,使用acme.sh
申请ZeroSSL也非常简单,用来替代Let’s Encrypt完全没有问题。不过遗憾的是和Let’s Encrypt一样,免费版SSL证书有效期只有90天,但我们多了一个SSL服务商选择,也是极好的,小伙伴们还不赶紧试试?
- ZeroSSL官网:https://zerossl.com/
acme.sh
项目地址:https://github.com/acmesh-official/acme.sh
经过测试,ZeroSSL在更新证书的时候不支持ec证书,不过在申请证书的时候是支持的。我是dns通配符申请模式。当我重新切回Let’s Encrypt之后,更新证书就支持ec证书了。
1. 可以去zerossl官网直接续期看是否支持ECC,如果支持可能是acme.sh的BUG
2. 如果是BUG,可以像acme.sh作者反馈下
老哥 现在还支持不
支持的呀。
大佬求救
Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 3
[Tue Feb 22 12:38:28 UTC 2022] Error
[Tue Feb 22 12:38:28 UTC 2022] Error add txt for domain:_acme-challenge.XXXXXX.xyz
[Tue Feb 22 12:38:28 UTC 2022] Please add ‘–debug’ or ‘–log’ to check more details.
[Tue Feb 22 12:38:28 UTC 2022] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh
兼容性比 Let’s Encrypt 还要差:
用 ZeroSSL 的: https://myssl.com/blog.bugimg.com?domain=blog.bugimg.com&status=success
用 Let’s Encrypt 的: https://myssl.com/raw.filel.ink?domain=raw.filel.ink&status=success
作为 Let’s Encrypt 替代品都还不及格.
不过免费的还支持泛域名也没啥好说的了, 只是希望以后会变好一点.
大哥,这锅ZeroSSL不背啊,是你配置不当。建议你使用https://ssl-config.mozilla.org/ 生成最佳配置。
这是我的检测结果:https://myssl.com/www.xiaoz.me?domain=www.xiaoz.me&status=success
感觉比LE还好啊,我也折腾玩一下。
zerossl好像还支持IP证书.
不错,Let’s Encrypt之外多了一个选择!