怎样使用certbot-dns-cloudflare

2022年9月19日 | 分类: 【技术】

【介绍】

源码:https://github.com/cloudflare/certbot-dns-cloudflare

certbot-dns-cloudflare 1.30.0

源码:https://pypi.org/project/certbot-dns-cloudflare/
作者:https://github.com/certbot/certbot

参考:https://www.cnblogs.com/senro/p/Blog01_L_S.html
参考:https://www.cnblogs.com/senro/p/Blog01_L_S.html
参考:https://community.letsencrypt.org/t/certbot-dns-cloudflare-automatic-renewal-issue/97627

【安装】

参考:https://bobcares.com/blog/install-certbot-dns-cloudflare/

sudo yum install epel-release
sudo yum install snapd

报错:

Error:
 Problem: package snapd-2.56.2-1.el8.x86_64 requires snapd-selinux = 2.56.2-1.el8, but none of the providers can be installed
  - conflicting requests
  - nothing provides selinux-policy >= 3.14.3-95.el8 needed by snapd-selinux-2.56.2-1.el8.noarch
  - nothing provides selinux-policy-base >= 3.14.3-95.el8 needed by snapd-selinux-2.56.2-1.el8.noarch

参考:https://unix.stackexchange.com/questions/685652/nothing-provides-selinux-policy-base-3-14-3-80-el8-5-2
参考:https://pkgs.org/search/?q=selinux-policy

yum install http://mirror.centos.org/centos/8-stream/BaseOS/aarch64/os/Packages/selinux-policy-targeted-3.14.3-108.el8.noarch.rpm http://mirror.centos.org/centos/8-stream/BaseOS/aarch64/os/Packages/selinux-policy-3.14.3-108.el8.noarch.rpm http://mirror.centos.org/centos/8-stream/BaseOS/aarch64/os/Packages/selinux-policy-minimum-3.14.3-108.el8.noarch.rpm

然后成功安装 snapd 。

设置 snapd 为开机启动:

sudo systemctl enable --now snapd.socket

创建软连接:

sudo ln -s /var/lib/snapd/snap /snap

重启服务器。

否则报错:

安装 certbot-dns-cloudflare :

sudo snap install certbot-dns-cloudflare

输出:

2022-09-18T19:46:35Z INFO Waiting for automatic snapd restart...
certbot-dns-cloudflare 1.30.0 from Certbot Project (certbot-eff✓) installed

安装 python3-certbot-dns-cloudflare :

sudo yum install  python3-certbot-dns-cloudflare

【配置】

先在 CloudFlare 获得 API Token :

参考:https://laowangblog.com/python-cloudflare-api-update-dns.html
参考:https://juejin.cn/post/7069995574266691614

在需要运行Certbot的主机上创建一个文件:/etc/letsencrypt/certbot-dns-cloudflare.ini

dns_cloudflare_api_token = _yourToken_

修改这个文件的所有者和权限,提高域名安全性。建议root:root和600。

【使用】

签发证书:

certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/certbot-dns-cloudflare.ini -d domain.name -d *.domain.name

Certbot的所有信息的路径:/etc/letsencrypt。

archive目录:包含所有已经申请的证书及私钥,包括已经过期的证书。
live目录:只包含最新的证书及私钥,通过符号链接指向archive目录对应的文件。

fullchain.pem是大多数软件需要的证书文件,实际上它是cert.pem和chain.pem的拼接。
privkey.pem如其名,是私钥文件。

更新证书:

certbot renew

查看证书:

certbot certificates

删除证书:

certbot delete

自动更新证书:

Certbot的设计就是用来自动化的,根据获得软件包的方式,你的Certbot可能已经带有自动化的脚本。

自动化有两套方案,Crontab或Systemd Timer。

这里说Systemd Timer。

创建文件:/etc/systemd/system/certbot.service

[Unit]
Description=Let's Encrypt renewal

[Service]
Type=oneshot
ExecStart=/usr/bin/certbot renew --quiet --agree-tos

创建文件:/etc/systemd/system/certbot.timer

[Unit]
Description=Automatic renewal of Let's Encrypt's certificates

[Timer]
OnCalendar=03:00:00
RandomizedDelaySec=1h
Persistent=true

[Install]
WantedBy=timers.target

启用自动更新:

sudo systemctl enable --now certbot.timer