我正在尝试使用通配符 SSL 设置反向代理特拉菲克,并针对 Cloudflare 区域发起 DNS 挑战。
我在 k8s 中有这个配置:
kind: ConfigMap
apiVersion: v1
metadata:
name: traefik-https
namespace: kube-system
data:
traefik.toml: |
# traefik.toml
defaultEntryPoints = ["http","https"]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[acme]
email = "[email protected]"
storage = "/etc/traefik/acme.json"
entryPoint = "https"
caServer = "https://acme-v02.api.letsencrypt.org/directory"
[[acme.domains]]
main = "*.notmyrealsite.com"
sans = ["notmyrealsite.com"]
[acme.dnsChallenge]
provider = "cloudflare"
我在上游容器中传递了正确变量CLOUDFLARE_API_KEY
和CLOUDFLARE_EMAIL
环境变量,但是在控制台中看到了这个错误:
time="2018-06-13T09:47:39Z" level=error msg="无法获取域 \"*.notmyrealsite.com,notmyrealsite.com\" 的 ACME 证书:无法获取证书:acme:错误 -> 一个或多个域有问题:\n[notmyrealsite.com] acme:错误 403 - urn:ietf:params:acme:error:unauthorized - 在 _acme-challenge.notmyrealsite.com\n 上发现错误的 TXT 记录 \"HREckyrZXY7uCVLaUkoYzadxkHbwfFavNWS_v14yMzk\"
我不确定这是否意味着 CF 登录成功的并且已更新(但只是使用了错误的 TXT 记录),或者这是否是它期望看到的 - 但什么都没有。
查看 CF 中的 DNS 条目,根本没有 TXT 记录。
(我只使用了免费的 CF 计划,因此我没有获得任何原始日志来查看针对 DNS 进行了哪些尝试)
什么原因可能导致 TXT 不匹配?
答案1
更多的是权宜之计而不是解决方案:
代替:
[[acme.domains]]
main = "*.example.org"
sans = ["example.org"]
使用:
[[acme.domains]]
main = "*.example.org"
[[acme.domains]]
main = "example.org"