我是如何优雅的申请Let’s Encrypt证书及续订

证书快要到期了,之前做的自动化失败。因为通配符证书申请、续期的时候只能通过 DNS 验证,而 DNS 添加记录只能手动,整个 cerbot 操作无法做到自动化,所以 renew 就失败了。但是我并不着急,这类教程总是一抓一大把。在到期的最后一天,我在网上搜了好多篇,找到合适自己的真不容易,遂记之。

过程

探索的路径如下图

结果

1.申请证书要有良好的域名解析,所以我推荐dns.he.net

2.最简单莫过于acm.sh,无污染服务器环境莫过于docker acm.sh

申请

1.直接运行的

下载

curl  https://get.acme.sh | sh

运行

export HE_Username="用户名"

export HE_Password="密码"

acme.sh --issue --dns dns_he -d datayang.com -d *.datyang.com

2.docker 运行的

下载

docker pull neilpang/acme.sh
mkdir -p /usr/local/acme.sh

申请

docker    run    --rm \    
-v    /usr/local/acme.sh:/acme.sh \   
-e    HE_Username="用户名"  \ 
-e    HE_Password="密码"   \
neilpang/acme.sh       --issue     --dns     dns_he    -d   datayang.com  -d    *.datayang.com

续订

写个cron定时直接docker脚本,脚步内容大致如下,没有测试

vim renew_acme.sh
#! /bin/sh
service nginx stop

docker run --rm \
-v /usr/local/acme.sh:/acme.sh \
neilpang/acme.sh --renew -d datayang.com -d *.datayang.com

service nginx srart

chmod +x  renew_acme.sh

在 etc目录建一个新文件acme-auto-renew-cron, 这个是一个 cron 计划,这段内容的意思就是 每隔 两个月的 凌晨 2:15 执行 更新操作。

15 2 * */2 *  ./renew_acme.sh

最后我们用 crontab 来启动这个定时任务

crontab /etc/acme-auto-renew-cron
查看开启的任务

crontab -l

参考:

https://www.jianshu.com/p/d318321b93a1

https://www.aaflalo.me/2017/02/lets-encrypt-with-dehydrated-dns-01/

https://github.com/AnalogJ/lexicon

https://github.com/adferrand/docker-letsencrypt-dns

https://github.com/Neilpang/acme.sh/wiki/Run-acme.sh-in-docker

https://github.com/lj2007331/lnmp

https://github.com/certbot/certbot

https://letsencrypt.osfipin.com/

暂无评论
发表新评论