这是 certbot 通过 DNS 解析验证来申请 let's encrypt 证书的示例,
包含两个云服务DNS的解析,阿里云 DNS 和腾讯云 DNSPod。目前配合计划任务可无限期自动更新免费的 let's encrypt 证书。
运行环境为 Linux,需要准备好 certbot 和 node.js,并使用 root 权限执行命令
cd ./dnspod
npm i
修改 config/index.js
secretId: '',
secretKey: '',
cd ./aliyun
npm i
修改 config/index.js
accessKeyId: '',
accessKeySecret: '',
certbot certonly --manual --preferred-challenges dns --manual-auth-hook 'node ./dnspod/auth.js' --manual-cleanup-hook 'node ./dnspod/cleanup.js' --register-unsafely-without-email --agree-tos -d *.your.domain
如通过计划任务自动更新证书,默认需要在过期前一个月内才能申请,否则自动执行会中断,需要修改/etc/letsencrypt/renewal下域名配置文件中下面这个值(取消注释)
# renew_before_expiry = 30 days
需要确保 90 - renew_before_expiry 值 < 执行周期
例如,可以无脑设置为90,这样过期前什么时候申请都可以(符合频次限制的前提下)
renew_before_expiry = 90 days
或者干脆在/etc/letsencrypt目录下包括archive、renewal、live目录中把待更新的域名相关文件都删除