【发布时间】:2021-07-08 02:32:11
【问题描述】:
我正在使用 LetsEncrypt dns-01 challenge system,这需要在 Google Cloud DNS 中动态创建具有特定内容的 TXT 记录,因此 LE 可以断言所有权证明以生成通配符证书(所以我不能使用 http-01 )。问题是有时 LE 告诉我创建一个以“-”开头的 TXT 记录,例如-E_DFDFHJKF1783FSHDJ。无论我做什么,我都无法让gcloud cli 正确接受这些数据。
例子:
gcloud dns record-sets transaction start --zone=myzone
gcloud dns record-sets transaction add "-E_ASDFSDF" --ttl=30 --zone=myzone --name=test --type=TXT
gcloud dns record-sets transaction remove "-A_DSFKHSDF" --ttl=30 --zone=myzone --name=test2 --type=TXT
如果您运行这些命令并检查生成的transaction.yaml,您可以查看它是否正确包含正确的字符串。如果它正确,您应该会看到类似的内容:
- kind: dns#resourceRecordSet
name: test.
rrdatas:
- '"ASDFASDF"'
ttl: 30
type: TXT
我正在通过 Node 的 child_process 执行此操作,但即使我直接从 bash 执行它也会遇到问题,因此 Node 目前并不是真正有意义的问题。我试过回显这个值。我试过设置一个环境变量并在字符串中使用它。
无论我做什么,我都会收到如下错误:
ERROR: (gcloud.dns.record-sets.transaction.add) unrecognized arguments: -E_ASDFSDF
【问题讨论】:
-
对于TXT资源记录数据,连字符是合法的。但是,CLI 将以连字符开头的 rrdata 解释为命令行选项。我的建议是使用 Google Cloud Console 或中止 Let's Encrypt 并在它要求您创建以连字符开头的 rrdata 时重新开始。 Google Cloud Console DNS 服务器 UI 允许以连字符开头的 rrdata。考虑打开一个错误报告:cloud.google.com/support/docs/issue-trackers
-
已创建问题...我将根据结果进行回复。 issuetracker.google.com/issues/193054503.
标签: bash gcloud lets-encrypt