SSL免费证书自动续期-acme.sh
关于
ACME是由 Let’s Encrypt 推出的自动化 SSL 证书管理协议。通过 ACME 协议,网站管理员可以轻松地自动申请、更新和管理 SSL 证书,完全告别手动操作的烦恼。
部署
git clone --depth 1 https://github.com/acmesh-official/acme.sh.git
cd acme.sh
./acme.sh --install -m username@example.com
安装完成后,终端输入acme.sh -h便可以看到帮助命令。

修改CA证书类型
目前支持的CA证书分别是 Let’s Encrypt、Buypass、ZeroSSL、SSL.com 和 Google Public CA,默认使用 ZeroSSL,如果需要更换可以使用如下命令:
#切换 Let’s Encrypt
acme.sh --set-default-ca --server letsencrypt
#切换 Google
acme.sh --set-default-ca --server google
以此类推!因为笔者偏爱letsencrypt 执行上方命令即可。

配置DNS API
通过服务器提供的API。让acme.sh自动创建域名验证记录以申请域名证书。本文以阿里云为例。首先登陆阿里云控制台 - 访问控制 RAM - 身份管理-用户

完成后,分别复制AccessKey ID和AccessKey Secret的值。保存并做好备份!

点击下方的添加权限。搜索DNS,选择AliyunDNSFullAccess点击确定!

配置 DNS API
在隐藏目录.acme.sh中添加配置
cd
cd .acme.sh
vim account.conf添加配置
export Ali_Key="LTAI4Fd8J9qs4fxxxxxxxxxx"
export Ali_Secret="Xp3Z7NDOW0CJcPLKoUwqxxxxxxxxxx"
申请证书
在申请证书之前,我们首先要确定原有ssl证书的位置。一般在你的nginx配置文件中。

一键申请命令
acme.sh --issue --dns dns_ali -d *.test.com --fullchain-file /home/ecs-user/test.pem --key-file /home/ecs-user/test.key命令说明:
–dns dns_ali:表示阿里云 DNS 的插件
-d
*.test.com:表示匹配所有 test.com 域名下的子域名–fullchain-file:pem证书位置
–key-file:证书key位置

完成后,便会在指定的位置生成证书。

在宝塔面板中。默认的证书文件名为fullchain.pem和privkey.pem。因此我们可以按照上面文件名进行生成。或者,执行下面命令。重写nginx配置文件。
acme.sh --installcert -d example.com \
--key-file /www/server/panel/vhost/cert/xxx.com/key.pem \
--fullchain-file /www/server/panel/vhost/cert/xxx.com/cert.pem \
--reloadcmd "service nginx force-reload"
自动部署
如果我们使用 curl https://get.acme.sh | sh 方式安装,续期任务会自动在定时任务中配置。使用acme.sh --cron便可以自动续期。

添加定时任务如下:
#设置每月执行一次的定时任务(每月第一天)
0 0 1 * * acme.sh --cron > /root/acme.sh/acme_cron.log 2>&1
在使用前,请先开启邮箱的pop3服务
安装mailx
yum install -y mailx
apt-get install -y mailx设置/etc/mail.rc文件,在文件尾追加如下配置
set from=xxoo@qq.com(发送邮件的📮)
set smtp=smtp.qq.com
set smtp-auth-user=xxoo@qq.com(发送邮件的📮,同上)
set smtp-auth-password=ooxx(邮箱的smtp密码,注意不是邮箱登录的密码)
set smtp-auth=login
set smtp-use-starttls
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/发送测试
echo "xxxxx" | mail -s "xxxxx xxxx" xxxxx@qq.com接下来,我们更新脚本。
#脚本
#!/bin/bash
cd ~
acme.sh --issue --dns dns_ali -d *.test.com --fullchain-file /home/ecs-user/test.pem --key-file /home/ecs-user/test.key
systemctl restart nginx
echo "站点HTTP证书更新完成" | mail -s "站点NB.COM已更新" xxxxx@qq.com
sleep 30 #30s后关闭脚本
exit 0最后,添加定时任务即可!
免责声明
本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。