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
最后,添加定时任务即可!
免责声明
本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。