最新:在推特Mastodon

Cloudflare

要使用 Cloudflare,您可以使用两种类型的令牌之一。API 令牌允许将应用程序范围的密钥绑定到特定区域和权限,而API 密钥是全局范围的密钥,具有与您的帐户相同的权限。

API 令牌建议用于更高的安全性,因为它们具有更严格的权限,并且更容易撤销。

API 令牌

可以在 **用户资料 > API 令牌 > API 令牌** 创建令牌。建议使用以下设置

  • 权限
    • 区域 - DNS - 编辑
    • 区域 - 区域 - 读取
  • 区域资源
    • 包含 - 所有区域

要创建一个新的 Issuer,首先创建一个包含您的新 API 令牌的 Kubernetes 密钥

apiVersion: v1
kind: Secret
metadata:
name: cloudflare-api-token-secret
type: Opaque
stringData:
api-token: <API Token>

然后在您的 Issuer 清单文件中

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: example-issuer
spec:
acme:
...
solvers:
- dns01:
cloudflare:
apiTokenSecretRef:
name: cloudflare-api-token-secret
key: api-token

API 密钥

可以在 **用户资料 > API 令牌 > API 密钥 > 全局 API 密钥 > 查看** 中检索 API 密钥。

要创建一个新的 Issuer,首先创建一个包含您的 API 密钥的 Kubernetes 密钥

apiVersion: v1
kind: Secret
metadata:
name: cloudflare-api-key-secret
type: Opaque
stringData:
api-key: <API Key>

然后在您的 Issuer 清单文件中

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: example-issuer
spec:
acme:
...
solvers:
- dns01:
cloudflare:
email: my-cloudflare-acc@example.com
apiKeySecretRef:
name: cloudflare-api-key-secret
key: api-key

故障排除

Actor com.cloudflare.api.token.xxxx 需要权限 com.cloudflare.api.account.zone.list 来列出区域

如果您收到您的令牌没有正确权限列出区域的错误,可能会有两个原因。

  1. 令牌缺少 区域 - 区域 - 读取 权限
  2. cert-manager 由于 DNS 问题识别出了错误的域名区域名称。

在第二个问题的情况下,您将看到以下错误

Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Started 6s cert-manager Challenge scheduled for processing
Warning PresentError 3s (x2 over 3s) cert-manager Error presenting challenge: Cloudflare API Error for GET "/zones?name=<TLD>"
Error: 0: Actor 'com.cloudflare.api.token.xxxx' requires permission 'com.cloudflare.api.account.zone.list' to list zones

在这种情况下,我们建议您 更改 DNS01 自检命名服务器

Cloudflare API 错误,用于 POST "/zones/<id>/dns_records` 通用错误

您可能会遇到这种情况,因为 Cloudflare 阻止使用 API 更新以下 TLD 的 DNS 记录:.cf.ga.gq.ml.tk。这在 Cloudflare 社区 中有讨论。我们建议在使用这些 TLD 时使用其他 DNS 提供商。