用 Certbot 和 DNSPod 插件处理泛域名证书申请和更新

software

我的服务器在阿里云,DNS 服务器在 DNSPod,试过用 certbot 配合 snap 的 DNSPod 插件配置泛域名证书,怎么想方设法都没成功。最后还是用了 python 上的 certbot 和插件才成功。

删除其他版本的 certbot

把以前的老版本的 Certbot 删除:

yum remove certbot

安装 python 3.8

阿里云的 CentOS yum 安装的 python3 版本比较低,最高是 python 3.6。

可以用 centos-release-scl

  1. 仓库注册,安装 python38。
1
2
yum install -y centos-release-scl # 仓库注册
yum install -y rh-python38 # 安装python3.8

2.1 创建软连接。

1
2
ln -s /opt/rh/rh-python38/root/usr/bin/python3 /usr/bin/python3
ln -s /opt/rh/rh-python38/root/usr/bin/pip3 /usr/bin/pip3

2.2 把 /opt/rh/rh-python38/root/usr/bin/ 加入 PATH,这样的话后面用 pip3 装了脚本可以正常执行。

1
export PATH=$PATH:/opt/rh/rh-python38/root/usr/bin/:/opt/rh/rh-python38/root/usr/local/bin
  1. 完成后确认版本。
1
2
python3 -V
pip3 -V

3.1 如果失败可能要刷新下命令缓存。

1
hash -r

安装 certbot 和 certbot-dnspod

1
pip3 install certbot certbot-dnspod

然后可以参考 certbot-dnspod文档

创建一个 ~/.secrets/certbot/dnspod.ini 的文件,内容为:

1
2
certbot_dnspod_token_id = <your token id>
certbot_dnspod_token = <your token>

授予权限:

1
chmod 600 ~/.secrets/certbot/dnspod.ini
1
2
3
4
5
sudo certbot certonly \
--authenticator certbot-dnspod \
--certbot-dnspod-credentials ~/.secrets/certbot/dnspod.ini \
-d example.com \
-d *.example.com

注意 certbot-dnspod-credentials 这个文件的 API ID 是在「API 密钥」界面的「DNSPod Token」标签下面的。

再注意一点,用 rh-python38,脚本目录是 /opt/rh/rh-python38/root/usr/local/bin,如果之前没把目录加入 PATH,会无法直接运行 certbot

本文作者:希蜜

本文链接: https://sand.litofu.com/wildcard-certificates-with-certbot-and-dnspod/

本作品采用知识共享署名 4.0 国际许可协议进行许可。