使用 acme.sh 通过 DNS API 申请通配符证书

自动证书管理环境( Automatic Certificate Management Environment ) 协议是一种通信协议,简称 「ACME」,用于自动化证书颁发机构与其用户的 Web 服务器之间的交互,允许以非常低的成本自动部署公钥基础设施。

acme.sh 脚本是一个纯粹用 Shell(Unix shell)语言编写的 ACME 协议客户端,使用广泛。

如果申请单域名证书有很多种方式,但是通配符证书就得使用 DNS API 方式申请。

由于把域名托管在 Cloudflare,所以使用 Cloudflare API。

在中文互联网里,都是使用 Cloudflare 的全局 API KEY 进行配置,为了安全起见,这里使用 Cloudflare API Token 进行配置,并且把 API Token 限制为仅对单个域的 Zone.DNS 的写入访问。

打开API 令牌页面获取 API 令牌。

点击 Create Token 按钮

create

点击 Edit Zone DNS 后面的 Use template,通过模版进行修改

use

根据自己的实际情况在下拉列表框中选择域名

edit

之后点击继续就能获取 API Token

save

API Token只会显示这一次,所以应该保存到安全的地方,以免遗忘。

Account_IDZone_ID 则在该域名的 Overview 页面

overview

写入配置

1
2
3
export CF_Token="xxxxxxxxxxxxxxxxxx"
export CF_Account_ID="xxxxxxxxxxxxx"
export CF_Zone_ID="xxxxxxxxxxxxxxxx"

签发证书

1
acme.sh --issue --dns dns_cf -d '*.example.com'

CF_TokenCF_Account_ID 被保存在 ~/.acme.sh/account.conf 文件。