Linux / 电脑技术 · 2024年12月17日 0

acme.sh 配置文件怎么写 使用 cloudflare dns 验证

在使用 acme.sh 通过 Cloudflare DNS 验证来生成和管理 SSL/TLS 证书时,你需要配置正确的 Cloudflare API 密钥或 API 令牌。以下是具体步骤和配置文件的编写方法:


1. 确保已安装 acme.sh

如果还没有安装,可以运行以下命令安装:

curl https://get.acme.sh | sh

2. 获取 Cloudflare API Token

  1. 登录到你的 Cloudflare 控制台
  2. 转到 My Profile > API Tokens
  3. 创建一个新的 API Token,选择自定义令牌
    • 权限:Zone:DNS:Edit
    • 作用域:选择你需要管理的域名,或者选择 All Zones(所有域名)。
  4. 保存生成的 API Token。

3. 配置 Cloudflare API 凭据

方法 1:使用 export 环境变量

直接通过环境变量导出 API Token:

export CF_Token="your_cloudflare_api_token"
export CF_Account_ID="your_cloudflare_account_id" # 可选,部分场景需要

方法 2:通过配置文件设置

将 API Token 写入 ~/.acme.sh/account.conf 文件中:

CF_Token="your_cloudflare_api_token"
CF_Account_ID="your_cloudflare_account_id" # 可选

注意:

  • 如果你使用的是旧版 API Key(全局 API Key),需要使用 CF_KeyCF_Emailexport CF_Key="your_global_api_key" export CF_Email="your_email@example.com" 但推荐使用 API Token,更加安全。

4. 生成证书

使用以下命令生成证书并通过 Cloudflare DNS 验证:

acme.sh --issue --dns dns_cf -d yourdomain.com -d *.yourdomain.com

解释:

  • --dns dns_cf 指定使用 Cloudflare DNS 验证。
  • -d yourdomain.com 表示主域名。
  • -d *.yourdomain.com 表示通配符证书。

5. 安装证书

生成成功后,可以将证书安装到指定路径:

acme.sh --install-cert -d yourdomain.com \
--key-file /path/to/yourdomain.key \
--fullchain-file /path/to/yourdomain.crt

6. 自动更新

acme.sh 会默认启用自动更新,证书到期时会自动续期。如果需要手动续期:

acme.sh --renew -d yourdomain.com --force

完整示例配置

环境变量方式

export CF_Token="your_cloudflare_api_token"
export CF_Account_ID="your_cloudflare_account_id" # 可选
acme.sh --issue --dns dns_cf -d example.com -d *.example.com

配置文件方式

编辑 ~/.acme.sh/account.conf

CF_Token="your_cloudflare_api_token"
CF_Account_ID="your_cloudflare_account_id" # 可选

然后运行:

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

通过上述方法配置后,acme.sh 将使用 Cloudflare DNS API 完成域名的自动验证和证书管理。