当子域名是另一个主机的 A 记录时 SSL 证书失败

当子域名是另一个主机的 A 记录时 SSL 证书失败

如果用词不当,请原谅。如果感觉我用错了,那可能就是错了。

先前的场景:

  • 我的域名提供商上有一个域名和子域名DOMAINA、*.DOMAINA,指向linode名称服务器ns*.linode.com
  • 我在 linode 服务器 LINODESERV 上托管了 SITEA,并使用了 linodes DNS 记录。
  • 我在 LINODESERV 上运行了 letsencrypts certbot,并使用 linode 插件通过 txt 记录生成证书。效果很好

新场景:

  • 我有一个新的 vercel 服务器,可以处理除 API 请求之外的所有事务。API 请求仍然发生在 LINODESERV 上

  • 主 DOMAINA 和所有 *.DOMAINA 子域现在由 vercels 域设置处理,该设置还处理所有 SSL 认证

  • 我在 vercel 域设置 api.DOMAINA 上有一个 A 记录,它指向 LINDODESERV ip 地址。这工作正常,并且 LINODESERV 处理任何 api.DOMAINA 请求

问题:

我无法再更新 api.DOMAINA 的 SSL 证书。

症状:

运行常规更新显示在 LINODESERV 上创建了 txt 记录。但是,certbot 报告:

DNS problem: NXDOMAIN looking up TXT for _acme-challenge.api.DOMAINA - check that a DNS record exists for this domain

可能的问题:

以前,我的域名提供商直接指向 ns1.linode.com,现在它指向 ns1.vercel.com,并且 vercel 使用 A 记录指向 api.DOMAINA。

我觉得 certbot 无法完成 TXT 记录挑战是因为这个原因?但我不知道为什么,也不知道如何补救。

答案1

我不知道为什么

因为您仍将 Certbot 配置为使用 Linode DNS 服务插件,但您的 DNS 区域是不再在 Linode 工作,它现在位于 ns#.vercel.com – 这意味着您需要让 Certbot 通过 Vercel 的 API 添加/删除 TXT 记录(如果存在)。

A/AAAA 记录和实际服务器的位置并不重要。这些记录仅告知客户端要连接的位置其他协议——它们不允许服务器处理子域的 DNS 请求(通过 NS 记录完成)。

如果 Vercel 没有可供 Certbot 使用的 API,请在 Linode 上创建一个子域区域(例如“acme.example.com”),在 Vercel 上添加 NS 记录以委托它,并在“_acme-challenge.api.example.com”处添加指向该子区域下某处的 CNAME 记录。然后继续使用 Certbot 的 Linode DNS 插件。

相关内容