Let's Encrypt使用DNSPOD验证自动续签证书

突然发现之前申请的证书就过期了,并没有自动更新。经过查询,发现Let's Encrypt的通配符证书需使用dns-01方式进行manual验证,是无法自动renew的。怎么办呢? 几经周折,终于自己实现了一个。

参考 https://hacpai.com/article/1531709298417 一文中的PHP脚本,我自己写了一个.net core global tools,然后把au.sh的脚本稍作修改

首先,通过下面的命令安装 .net core global tools

dotnet tool install -g dnspod

然后是 au.sh 的内容:

#!/usr/bin/bash

# 配置信息
# 请填入你api的id,加上半角逗号,加上api的token
Token="[api_id],[api_token]"
DomainName="xxx.com"
SubDomain="_acme-challenge"
# 脚本路径
PATH="/root"

# 调用 Cli,自动设置 DNS TXT 记录。
# $CERTBOT_VALIDATION 是 Certbot 的内置变量,代表需要为 DNS TXT 记录设置的值
$PATH/.dotnet/tools/dnspod -t $Token -d $DomainName -v $CERTBOT_VALIDATION -s $SubDomain --type TXT

# DNS TXT 记录刷新时间
/usr/bin/sleep 30

你只需要准备好域名的api的id和token,再稍许配置,就可以了。如果你不清楚你dnspod账号的api的id和token,请进这个页面申请API token。

最后就是执行下renew脚本

./certbot-auto renew --cert-name xxxxx.com --manual-auth-hook au.sh

相关的代码可以到这里获取:https://github.com/lishewen/DNSPod4NETCore2