使用acme.sh申请ZeroSSL泛域名证书,ZeroSSL,Let’s Encrypt证书

随着`acme.sh`作者的不断更新,功能越来越强大,现在`acme.sh`已经支持ZeroSSL、BuyPass、Let’s Encrypt等多种不同证书。

📖前言

随着acme.sh作者的不断更新,功能越来越强大,现在acme.sh已经支持ZeroSSL、BuyPass、Let’s Encrypt等多种不同证书。

由于Let’s Encrypt OSCP服务器使用人多,导致国内首次访问使用Let’s Encrypt SSL的站点加载速度过慢或失败,我们同时分享下另一个SSL服务提供商ZeroSSL,他的限制比较宽松。当Let’s Encrypt 不能用时也可以用ZeroSSL多一个选择

特别说明,debian 一定要使用 ~/. 前缀

🛁关于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靠拢。

🚿关于Let’s Encrypt

Let’s Encrypt是一个于2015年推出的数字证书认证机构,一直以来提供免费的SSL证书服务,使用的用户很多 acme模认首选此机构

🎠安装acme.sh

acme.sh 实现了 acme 协议,可以帮助你快速申请SSL证书,自动更新证书等操作,极大简化操作步骤。在使用之前,我们需要先安装,以下命令均在Linux系统完成。

1
2
3
4
#安装acme.sh 国外
curl  https://get.acme.sh | sh
#安装国内版
curl https://gitee.com/neilpang/acme.sh/raw/master/acme.sh | sh

是的,只需要简单一行命令即可安装,安装完成后,可输入acme.sh -v查看当前版本。验证是否成功。

1
~/.acme.sh -v

⛺将acme.sh server更改为ZeroSSL

注意,使用ZeroSSL 需要注册帐号和API,下方有方法。

如果用Let’s Encrypt这一步不做。

acme.sh 默认使用Let’s Encrypt作为服务提供商,我们可以通过以下命令,将其更换为ZeroSSL:

1
2
#更换默认服务商为ZeroSSL
~/.acme.sh --set-default-ca  --server zerossl

⛲配置DNS API

SSL证书验证可通过DNS验证、文件验证等多种方式,为了方便多个域名申请以及后续证书更新,推荐使用DNS API方式,不过在使用前需要先进行设置。

找到你域名的云服务商的API,运行命令写入

  • DNSPOD(国内版,只有国内版才可以申请),命令为:
1
2
export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"
  • Cloudflare Global API
1
2
export CF_Key="xxxxxxx" 
export CF_Email="xxx@xxx.com"
  • 华为云 (国内版)
1
2
3
export HUAWEICLOUD_Username=<Your Username> # Usually hwxxxxxx
export HUAWEICLOUD_Password=<Your Password>
export HUAWEICLOUD_ProjectID=<A Project ID> 
  • 阿里云
1
2
export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"

更多DNS API设置请参考:https://github.com/Neilpang/acme.sh/tree/master/dnsapi

🧭继续配置ZeroSSL API ,Let’s Encrypt跳过>

申请证书之前,建议先在ZeroSSL官方网站:https://zerossl.com/注册账号,方便与acme.sh申请的证书进行绑定于关联。

1666006939201.png

🎨acme.sh申请ZeroSSL泛域名SSL证书

首次使用需要先注册ZeroSSL账户(参考上一步),如果已经注册,下面的命令会自动关联账户,命令如下(myemail@example.com改成你自己的ZeroSSL邮箱,不要乱填):

1
~/.acme.sh  --register-account  -m myemail@example.com --server zerossl

🏰申请泛域名SSL证书

刚刚已经在上一个步骤中设置好各云解析DNS API,现在可以输入命令直接申请:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Cloudflare
~/.acme.sh --dns dns_cf --issue -d *.example.com -d example.com

# 腾讯/DNSPod(国内版)
~/.acme.sh --dns dns_dp --issue -d *.example.com -d example.com

# 阿里云
~/.acme.sh --dns dns_ali --issue -d *.example.com -d example.com

# 华为云命令
~/.acme.sh --dns dns_huaweicloud --issue -d *.example.com -d example.com

🏯开始SSL自动更新

这样就可以每次快过期时,acme 就可以自动帮你更新证书

1
~/.acme.sh/acme.sh  --upgrade  --auto-upgrade

🌠复制证书

前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件。正确的使用方法是使用 –installcert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:

1
2
3
~/.acme.sh  --installcert  -d  example.com   \
        --key-file   /文件绝对路径/example.com \
        --fullchain-file /文件绝对路径/example.com \

Nginx复制后重新载入

1
2
3
4
~/.acme.sh  --installcert  -d  example.com   \
        --key-file   /文件绝对路径/example.com \
        --fullchain-file /文件绝对路径/example.com \
        --reloadcmd  "service nginx force-reload"

⛱️创建自动复制证书脚本

我们需要自动定期把证书COPY到指定目录

1
2
3
4
5
# 创建.sh
touch ssl.sh

# 修改脚本文件
nano ssl.sh

将内容COPY至ssl.sh

1
2
3
4
5
#!/bin/bash

~/.acme.sh  --installcert  -d  example.com   \
        --key-file   /文件绝对路径/example.com \
        --fullchain-file /文件绝对路径/example.com \

给.sh赋予权限

1
chmod +x ssl.sh

每天定期复制SSL证书

Debian 11为例:

1
nano /var/spool/cron/crontabs/root

copy 以下内容放在文件下一行

1
0 3 * * * "/.sh文件的绝对路径/"/ssl.sh

= 完🛰️ =

这是一个墨茶的博客
Built with Hugo
主题 StackJimmy 设计