你好,我遇到了一个以前从未遇到过的特定问题,因为我从来没有为同一个域和子域运行过不同的证书,但其他公司要求在他们的服务器上运行他们自己的证书,问题是主域和子域位于不同的服务器上。
场景如下:
在我的托管上我已经创建了maindomain.tld
,并且subdomain.maindomain.tld
在同一个托管上我有加密证书,并且它对该服务器上的所有域和子域都可以正常工作。
但是另一家公司希望在自己的服务器上运行自己的脚本,因此在 DNS 字段中,他们要求我在其服务器 IP 上输入子域的 A 记录。
DNS 基本上看起来像这样:
A subdomain.domain.tld (secondary server ip)
A domain.tld (main server ip)
NS domain.tld ns1.mainserver.tld
CAA domain.tld 0 issuewild "letsencrypt.org"
这是一个简短的版本,基本上与任何其他设置一样,主域名将转到托管的 ns1 和 ns2,子域名将转到其他公司服务器 IP。
他们要求我删除 CAA 记录,但问题是,Let's Encrypt 要求域上具有 CAA,否则它将不会在时间到期时进行更新。
他们无法在其服务器上更新自己的证书,因为主服务器域上有 let's encrypt。
我有一个选项可以在子域上生成让我们加密证书或者取消选中子域的选项,另外据我了解通配符也应该允许为子域生成证书。
那么我们如何才能让两台服务器都能正确更新证书呢?我只想说他们使用 sectigo。
答案1
let's encrypt 要求域名具有 CAA
这不是真的,看看https://letsencrypt.org/docs/caa/
您可以使用CAA
记录,如果记录存在,证书颁发机构需要查询并使用它们。如果不存在,一切照常。
他们无法在自己的服务器上更新自己的证书,因为主服务器域上有 let's encrypt。[..] 那么我们如何才能让两台服务器都能正确更新证书呢?我只想说他们使用 sectigo。
那么很简单,保留您的 CAA 记录(如果您愿意),并添加另一条CAA
记录subdomain
,其中提到了 Sectigo。因此,子域的证书可以由 Sectigo(而不是其他任何人)提供,而域的证书可以由 Let's Encrypt(而不是其他任何人)提供
请注意,您观察到的行为是因为CAA
记录查询“爬升”到根目录。如果在名称上未找到任何记录,则 CA 必须向根目录递归以查找记录,CAA
因此即使对于子域,它们显然也会命中您当前的记录。
证书不绑定到特定服务器。您可以随时在多台服务器上安装任意数量的不同证书,其中包含多个名称。