利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程

talklee

文章最后更新时间:2022年04月27日已超过722天没有更新。

之前介绍过怎么《利用青云免费申请 Let's Encrypt 泛域名SSL证书》,今天跟彧繎聊天时发现他的站使用的也是泛域名证书而且是一年了,问了他才知道是收费的,当然并不贵,只是我没有admin开启的邮箱也就是admin#talklee.com,所以无法申请,恰巧看到明月登楼博主的博客也是SSL证书就咨询了以下,发现他的是zerossl的证书,当然跟青云的一样有效期三个月,但是zerossl可以通过acme.sh实现自动续费,目前acme泛域名貌似仅仅命令形式申请,在官网上申请的时候需要一些费用才行。

利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程 第1张

首先安装acme.sh

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

curl https://get.acme.sh | sh
source ~/.bashrc

或者:

wget -O - https://get.acme.sh | sh

使用curl命令安装的第一次出现了如图的错误,提示可以先安装 socat ,因为我不需要,所以没有安装。curl安装失败,可以使用wget命令尝试。

设置为自动更新(可选):

acme.sh --upgrade --auto-upgrade

acme的GitHub地址:https://github.com/acmesh-official/acme.sh

利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程 第2张

安装acme完成后使用“acme.sh -v”命令查看版本号,代码如下:

acme.sh -v

如图所示,acme版本号是3.0.3,忽略图中的红色,因为测试的时候我用了两台机器,由于第一次安装各种错误,导致教程不完善,毕竟我也是摸着石头过河,对这些东西不熟悉,只能一点点来,至此安装acme完成。

利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程 第3张

按照网上所说的acme.sh 2.x版本默认使用Let’s Encrypt作为服务提供商,3.x之后默认使用的是ZeroSSL,但是由于我第一次弄,所以还是重新更换默认服务商为ZeroSSL,代码如下:

acme.sh --set-default-ca --server zerossl

系统返回的命令就是zerossl服务商,然后我们设置下域名解析的DNS API。

配置DNS API

SSL证书验证可通过DNS验证、文件验证等多种方式,为了方便多个域名申请以及后续证书更新,推荐使用DNS API方式,不过在使用前需要先进行设置。 如果使用的DNSPOD(国内版),命令为:

export DP_Id="00521"
export DP_Key="talklee.com"

获取DNSPOD密钥可通过:https://console.dnspod.cn/account/token/token 获取,如图:

利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程 第4张

将ID换成自己的,把Token值放在Key之内,然后执行命令,如图:

利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程 第5张

acme.sh部署完成后我们来申请ZeroSSL泛域名SSL证书,需要先关联账户,执行下面的命令会自动关联账户,命令如下(admin@talklee.com改成你自己的ZeroSSL邮箱,即使没注册,运行命令之后也会自动注册的):

acme.sh --register-account -m admin@talklee.com --server zerossl

命令执行后,如图,会给你反馈一些信息,记下来就行,一般用不到。

利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程 第6张

账户注册关联完成后申请泛域名证书,执行以下命令:

acme.sh --dns dns_dp --issue -d *.talklee.com -d talklee.com

其中 dns_dp 是指DNSPOD,*.talklee.com 换成您的 域名即可,完成后如图:

PS:一定要设置两个域名,一个是*.域名,另外一个是域名,按照代码命令设置,图中未设置talklee.com,访问的时候会提示证书错误,切记!!!

注:acme.sh支持多个DNS服务商,演示用的dnspod,其他的服务商可以参考官方文档:https://github.com/acmesh-official/acme.sh/wiki/dnsapi  进行查看设置。

利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程 第7张

生成过程中,几分钟左右即可完成,在验证的过程中会自动解析一个TXT记录,校验完成后会自动删除,所以建议大家选择DNS校验,这里就不截图了,感兴趣的可以是dnspod域名继续的记录查看。待验证通过后即表示申请成功,如图所示,会给我们反馈证书生成的路径:

利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程 第8张

生成的证书放在了/root/.acme.sh/*.talklee.com目录,因为这是 acme.sh 脚本的内部使用目录,而且目录结构可能会变化,所以我们不能让 Nginx 的配置文件直接读取该目录下的证书文件,需要使用--installcert命令,指定目标位置,然后证书文件会被 copy 到相应的位置,我们先去/data/目录下新建一个/ssl/文件夹,进入文件夹在新建一个/域名文件夹/,例如, /data/ssl/talklee/,然后执行以下命令:

acme.sh --installcert -d *.talklee.com \
        --key-file /data/ssl/talklee/*.talklee.com.key \
        --fullchain-file /data/ssl/talklee/fullchain.cer \
        --reloadcmd "service nginx reload"

利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程 第9张

把“*.talklee.com”替换成刚刚您自己申请的泛域名,再把“*.talklee.com.key”换成刚刚生成的SSL证书密钥文件,fullchain.cer不需要替换了,默认生成的就是这个。

另外还得说下,我直接执行命令的时候出错(cannot touch错误 ),所以才新建目录之后才执行,执行完成后,在目录中才能看见被Copy的文件。正确的显示如下:

利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程 第10张

即完成命令之后会自动迁移,但是重启的命令出错,(重载代码已更新,不会出现图中错误),如图无效去宝塔软件面板中重载nginx即可,证书配置完成后,我们需要部署到网站,打开对应的站点,点击站点配置,在弹出的界面选择SSL,然后选择其他证书,把刚刚Copy的文件内容复制到证书里面,到密钥(KEY)对应的是.key文件,证书(PEM格式)对应的是.cer文件。

利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程 第11张

复制完成后点击底部保存按钮,关于是否开启http强制跳转httls随意,建议开启,在右上角,设置完成后,打开配置文件,如图:

利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程 第12张

其他内容都不需要管,因为是系统生成的,我们只需要把SSL证书的路径更换一些,代码如下:

ssl_certificate    /data/ssl/talklee/fullchain.cer;
ssl_certificate_key   /data/ssl/talklee/*.talklee.com.key;

把证书的路径换成我们刚刚Copy的路径即可。一切就绪之后我们打开网站,查看SSL证书,如图:

利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程 第13张

终于完成了,不怪彧繎博主了,真的是太费事,目前证书有效期是90天,三个月后按理说会自动续期,至于结果如何我们三个月后再见了,码了小半天的文章,测试了整整一天,我得去冲杯咖啡歇会,太尼玛累人了,当然网上的教程很多,只不过他们会忽略一步基本的步骤,导致我测试的时候有些抓瞎,所以才把完整的步骤整理后重新发布一篇,有问题留言反馈吧。

卸载证书:

今天更新下,怎么卸载已经存在的证书:

首先使用

acme.sh --list

命令查看目前服务器所存在的证书,如图,目前仅有一个证书:

利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程 第14张

然后我们使用:

acme.sh  --revoke -d *.talkle.com

acme.sh  --remove -d *.talkle.com

--revoke,销毁一个证书,

--remove,从acme.sh已知的证书列表中删除证书,

如图,我两次域名写错了,可以忽略。

利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程 第15张

证书卸载吊销完成后,我们需要的话在重新申请吧,最好回到证书的目录看看证书是否删除,未删除的话手动删了吧。

文章版权声明:除非注明,否则均为李洋个人博客原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (有 2 条评论,8723人围观)
网友昵称:明月登楼
明月登楼 V 游客 Google Chrome 100.0.4896.127 Windows 10 x64 沙发
2022-04-26 来自天津 回复
我默认用的一直都是Let's Encrypt, CDN 上才是ZeroSSL!
网友昵称:talklee
talklee V 博主 Sogou Explorer Windows 10 x64
2022-04-28 来自天津 回复
@明月登楼 最后显示的不还是CDN的证书吗,CDN还能自动续期么?

目录[+]