certbot 自动更新 DNSPOD 泛域名证书

本文最后更新于 2023年3月14日 晚上

最近我把服务器上的证书全换成泛域名证书了。域名比较多的话,每一个域名都要申请一份证书,虽然可以用 certbot 自动续期,但是因为不同的域名证书不一样,在写 nginx 配置的时候比较麻烦。

由于 certbot 已经支持了 泛域名证书的申请,所以我们可以申请泛域名证书,然后为泛域名证书自动续期就好了。假设我们的域名是 askk.cc,我希望为 askk.cc*.askk.cc 申请一份证书。

具体步骤

首先,我们需要一个软件包:certbot-dns-dnspod, arch 用户的话,我已经打包好了certbot-dns-dnspod-git.
安装上该软件包之后,去 DNSPOD 申请 APIKEY. 具体做法参考 腾讯云 DNSPod 域名 API 申请 Let’s Encrypt 泛域名 SSL 证书过程记录
然后记录下ID 与 KEY,写到文件里(我写到 /etc/letsencrypt/dnspod.ini) 记得将文件权限设置为 600

1
2
3
# cat /etc/letsencrypt/dnspod.ini
dns_dnspod_api_id="YOUR_ID"
dns_dnspod_api_token="YOUR_KEY"

接下来为每个泛域名手动申请一遍证书以便 certbot 记录下更新参数(可以看 /etc/letsencrypt/renewal/askk.cc.conf)。

1
sudo certbot certonly  --preferred-challenges dns -d "*.askk.cc" -d askk.cc --dns-dnspod-credentials /etc/letsencrypt/dnspod.ini

到这里其实泛域名证书就申请完了,记得启动 certbot.timer 让它帮你自动更新。

Nginx 配置

再说一下如何在 Nginx里面使用泛域名证书,
首先创建这样一个文件(一个泛域名一个文件)

1
2
3
4
5
6
#/etc/nginx/conf.d/001-certbot-askk.cc.conf

ssl_certificate /etc/letsencrypt/live/askk.cc/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/askk.cc/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

然后在你的每个网站的配置里都加上这么一行就配置好证书了。

1
include conf.d/001-certbot-askk.cc.conf;

本期到这里就结束了

参考资料

  1. 腾讯云 DNSPod 域名 API 申请 Let’s Encrypt 泛域名 SSL 证书过程记录

certbot 自动更新 DNSPOD 泛域名证书
https://blog.askk.cc/2023/03/14/certbot-wildchar-auto-renew/
作者
sukanka
发布于
2023年3月14日
许可协议