共计 2565 个字符,预计需要花费 7 分钟才能阅读完成。
在很早的一篇文章中《使用 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