使用cloudflare API token申请let’s encrypt泛域名证书

/ 0评 / 2

前言

如果使用官网直接推荐的apt方法安装certbot,申请泛域名证书的话,所安装的certbot版本是不支持使用cloudflare API Token的,只能使用email和全局Global API Key。

然鹅这样的权限给的实在太广了,一旦泄露重置,就要全部重新配置,很不方便。

但是官网好多必要的操作没给全,因此我在这里介绍一下怎么安装当前最新稳定版的certbot和相关插件。(非cloudflare也是同理)

准备

Cloudflare解析

首先要去Cloudflare申请一个账号,导入自己的域名。

按照cloudflare的操作流程,从域名服务商的dashboard中,修改DNS服务器(不是解析值,是服务器)为cloudflare所要求的值就ok了。

CDN部分在这里不多做介绍了。

申请Cloudflare API Token

访问token生成网址,点击右上角的Create Token,如下图给予权限。

一定注意,因为Cloudflare的API设计问题,目前为止Zone只能赋予All Zone权限。如果指定域名会报这样的错。

```Unable to determine zone_id for xxxxx.com using zone names: [u'xxxxx.com', u'com']. Please confirm that the domain name has been entered correctly and is already associated with the supplied Cloudflare account. The error from Cloudflare was: 0 Actor 'com.cloudflare.api.token.xxxxxxxxx' requires permission 'com.cloudflare.api.account.zone.list' to list zones```

将API Token写入鉴权文件

创建文件夹

mkdir -p ~/.secret/certbot

创建鉴权文件

vim ~/.secret/certbot/cloudflare.ini

写入API Token

# Cloudflare API token used by Certbot
dns_cloudflare_api_token = 0123456789abcdef0123456789abcdef01234567

如果执意使用邮箱 + Global API Key,请使用

# Cloudflare API credentials used by Certbot
dns_cloudflare_email = [email protected]
dns_cloudflare_api_key = 0123456789abcdef0123456789abcdef01234

设置正确的权限

chmod 600 ~/.secret/certbot/cloudflare.ini

安装certbot

安装本体

wget https://dl.eff.org/certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto
sudo chown root /usr/local/bin/certbot-auto
sudo chmod 0755 /usr/local/bin/certbot-auto
/usr/local/bin/certbot-auto --help

如果正确输出帮助信息就是成功了。

具体可以参考这里

安装插件

检查是否有需要的插件

cerbot-auto plugins

检查里面是否有dns-cloudflare,一般是没有的。如果没有,则安装。

source /opt/eff.org/certbot/venv/bin/activate  # 进入虚拟环境
pip install certbot-dns-cloudflare  # 安装插件

如果需要自动配置apache或nginx的也需要相关插件nginxapache,如果没有可以一起装了。

pip install certbot-nginx

申请证书

以上都完成后,就可以申请证书了。

certbot-auto  --dns-cloudflare -d xxxx.com -d *.xxxx.com -i nginx

把上图的 xxxx.com都改成你要申请的域名就🉑了。
之后在出现

Input the path to your Cloudflare credentials INI file (Enter 'c' to cancel):

询问你鉴权文件位置时,输入~/.secrets/certbot/cloudflare.ini即可

发表评论

电子邮件地址不会被公开。 必填项已用*标注

不够聪明的人工智能可进不来哦 *