沙滩星空的博客沙滩星空的博客

用Lego实现 Let's Encrypt HTTPS的SSL证书

证书申请

#!/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/

未经允许不得转载:沙滩星空的博客 » 用Lego实现 Let's Encrypt HTTPS的SSL证书

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址