Letsencrypt使用DNSPOD验证自动更新证书

突然发现之前申请的证书就过期了,并没有自动更新。经过查询,发现Letsencrypt的certbot-auto使用dns-01方式进行manual验证,是无法自动renew的。怎么办呢? 几经周折,终于找到了一个比较好的办法。

距离之前一篇使用DNS配置letsencrypt证书的文章已经过去了3个月,当时还没有自动化插件,但就在6月份,有人写了letsencrypt使用dnspod进行dns验证的python插件,所以只需要你准备好域名的api的id和token,再稍许配置,就可以了。如果你不清楚你dnspod账号的api的id和token,请进这个页面申请API token。

配置过程如下。

首先需要写一下配置文件,内容如下:

第一行填入一个你的邮箱即可,没有特殊要求。第二行要注意,请填入你api的id,加上半角逗号,加上api的token。然后保存到某个路径下即可

接下来需要有一个技巧,先下载并运行certbot-auto。然后使用certbot-auto自己的pip,安装上certbot-dns-dnspod这个插件,然后运行certbot-auto,并指定使用certbot-dns-dnspod进行验证即可,整个过程非常顺利。

更新证书需要配置下crontab,每天凌晨3点会跑一遍程序看看需不需要更新证书,我使用的是nginx,所以就写成下面的样子:

有了这个工具,再也不用担心某些域名不方便访问80端口的问题了,直接使用dns验证就能自动更新证书了,而且后续是免维护的。