简介
由于现在阿里云上申请的SSL证书,免费的版本,由原来的1年缩短到3个月了,所以就记录下使用acme的自动续签程序
步骤
阿里云设置
安装acme
下载GitHub
#解压
unzip acme.sh-master.zip
cd acme.sh-master
#example 替换成自己的邮箱
./acme.sh --install -m example@aliyun.com
申请证书
#输入阿里云子账户的密钥
export Ali_Key="example"
export Ali_Secret="example"
#example.com 替换成自己需要申请的域名
acme.sh --issue --dns dns_ali -d example.com --force
生成nginx的ssl文件
#example.com 替换成自己需要申请的域名
#example 替换成自己需要保存的路径
acme.sh --install-cert -d example.com \
--key-file /example/example.key \
--fullchain-file /example/example.pem \
--reloadcmd "systemctl restart nginx"
编写监控脚本
vi /example/is_ssh.sh
#!/bin/bash
#判断证书是否即将到期
# 设置 acme.sh 的路径
ACME_SH_PATH="/root/.acme.sh/acme.sh"
# 你想要监控的域名
DOMAIN="example.com"
# 获取当前日期
CURRENT_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
# 获取证书的到期日期
EXPIRY_DATE=$($ACME_SH_PATH --list | grep $DOMAIN | awk '{print $6}')
# 计算当前日期与到期日期的天数差
DAYS_LEFT=$(( ($(date -d "$EXPIRY_DATE" +%s) - $(date -d "$CURRENT_DATE" +%s)) / 86400 ))
echo "h--expire--$DAYS_LEFT"
# 设置通和续签的命令,当证书有效期小于等于2时
if [ "$DAYS_LEFT" -le 2 ]; then
# 这里你可以放入你想要的操作,比如发送邮件,重启服务等
curl "http://example:port/example?mailTo=example@aliyun.com&title=h-domain-name-expire&content=h-domain-name-expire"
#运行续签脚本
sh /example/example.sh
fi
编写续签脚本
vim /example/example.sh
#!/bin/bash
source /root/.acme.sh/acme.sh.env
source /root/.bashrc
rm -rf /root/.acme.sh/*.carlme.com_ecc
mkdir -p /example/
rm -f /example/*
#输入阿里云子账户的密钥
export Ali_Key="example"
export Ali_Secret="example"
#example.com 替换成自己需要申请的域名
acme.sh --issue --dns dns_ali -d example.com --force
#example.com 替换成自己需要申请的域名
#example 替换成自己需要保存的路径
acme.sh --install-cert -d example.com \
--key-file /example/example.key \
--fullchain-file /example/example.pem \
--reloadcmd "systemctl restart nginx"
添加定时任务
#每日凌晨监控一次
0 1 * * * sh /example/is_ssh.sh >/dev/null 2>&1