You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ACME和Cloudflare续期SSL证书时遇“无权访问资源”错误

解决ACME + Cloudflare续期SSL时的9109权限错误与TXT记录添加失败

错误本质

报错里的Cloudflare API错误码9109明确表示使用的API凭证没有访问目标域名资源的权限,invalid domain和TXT记录添加失败都是权限问题引发的连锁反应。

排查与修复步骤

1. 定位ACME的Cloudflare配置文件

acme.sh会为每个域名单独存储配置,先找到目标域名的配置目录:

cd /root/.acme.sh/<你的域名>/

目录内的配置文件(如cf.ini或含环境变量的脚本)存储了Cloudflare的API凭证和Zone信息,先核对这些参数是否正确。

2. 检查Cloudflare API凭证权限

  • 若使用API令牌(推荐):
    登录Cloudflare后台,进入「个人资料」→「API令牌」,找到对应令牌:
    • 确认令牌已开启Zone.DNS的编辑权限
    • 确认令牌的资源范围包含目标域名的Zone(需明确指定,而非泛选无权限的「所有区域」)
  • 若使用全局API密钥:
    确认该密钥对应的Cloudflare账号拥有目标域名的管理权限(是域名所有者或有权限的成员)

3. 手动验证API权限

用curl直接调用Cloudflare API验证权限,排除ACME配置问题:

# API令牌验证示例
curl -X GET "https://api.cloudflare.com/client/v4/zones/<你的Zone ID>/dns_records" \
-H "Authorization: Bearer <你的API令牌>" \
-H "Content-Type: application/json"

# 全局密钥验证示例
curl -X GET "https://api.cloudflare.com/client/v4/zones/<你的Zone ID>/dns_records" \
-H "X-Auth-Email: <你的Cloudflare登录邮箱>" \
-H "X-Auth-Key: <你的全局API密钥>" \
-H "Content-Type: application/json"

返回success: true说明权限正常;若仍返回9109错误,直接去Cloudflare调整凭证权限。

4. 重新配置ACME并续期

若凭证正确但ACME配置未生效,手动设置环境变量后重新触发续期:

# API令牌场景
export CF_API_TOKEN="你的有效API令牌"
export CF_ZONE_ID="目标域名的Zone ID"
/root/.acme.sh/acme.sh --renew -d <你的域名> --dns dns_cf

# 全局密钥场景
export CF_Email="你的Cloudflare登录邮箱"
export CF_Key="你的全局API密钥"
/root/.acme.sh/acme.sh --renew -d <你的域名> --dns dns_cf

5. 确认域名正确性

检查_acme-challenge.<你的域名>中的主域名是否拼写正确,且确实在当前Cloudflare账号的管理范围内。

内容的提问来源于stack exchange,提问作者Kevin.B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 19:46:11