证书申请
#!/bin/bash
export ALICLOUD_ACCESS_KEY=ALICLOUD_ACCESS_KEY
export ALICLOUD_SECRET_KEY=ALICLOUD_SECRET_KEY
runargs="--email=your@qq.com --domains=your.domain.com --dns=alidns --accept-tos --path=/root/apps/ssl"
# OBTAIN A CERTIFICATE 首次运行时执行证书申请命令
/root/apps/lego ${runargs} run
证书续期
创建 lego.sh
证书续期脚本,此脚本可加入 crontab
定时任务。每周检查一次。
#!/bin/bash
export ALICLOUD_ACCESS_KEY=ALICLOUD_ACCESS_KEY
export ALICLOUD_SECRET_KEY=ALICLOUD_SECRET_KEY
# runargs="--email=your@qq.com --domains=your.domain.com --http --accept-tos --path=/root/apps/ssl"
runargs="--email=your@qq.com --domains=your.domain.com --dns=alidns --accept-tos --path=/root/apps/ssl"
# OBTAIN A CERTIFICATE 首次运行时执行证书申请命令
# /root/apps/lego ${runargs} run
# RENEW A CERTIFICATE 申请证书后,把证书续期加入定时任务
/root/apps/lego ${runargs} renew
# 证书续期之后,一定要重载Web服务配置。如nginx,apache,uhttpd
# echo "$(date '+%Y-%m-%dT%H:%M:%S')"
# docker exec -t nginx /bin/bash /updatessl.sh
systemctl reload nginx.service
# 每周日凌晨1点10分执行该脚本
# echo "10 1 * * 0 /home/root/apps/lego.sh >> /home/root/apps/lego.output 2>&1" >> /var/spool/cron/crontabs/root
加入定时任务
- 使用
sudo crontab -e
命令,或直接编辑/var/spool/cron/crontabs/root
文件,创建以超级用户权限执行脚本的定时任务。
10 1 * * 0 /home/root/apps/lego.sh >> /home/root/apps/lego.output 2>&1
# 15 0 * * 0 /etc/init.d/uhttpd reload
- 执行以下命令之一重载或重启cron
/etc/init.d/cron reload
sudo systemctl restart cron
可以通过环境变量提供参数信息:
- LEGO_ACCOUNT_EMAIL: the email of the account.
- LEGO_CERT_DOMAIN: the main domain of the certificate.
- LEGO_CERT_PATH: the path of the certificate.
- LEGO_CERT_KEY_PATH: the path of the certificate key.
https://go-acme.github.io/lego/usage/cli/renew-a-certificate/