我的公司“ourcompany”拥有一个二级 DNS 域名:ourcompany.org
。我们目前使用此域名以及www.ourcompany.org
和feature1.ourcompany.org
,并为这两个三级域名生成了 SSL 证书。
然后我们订阅了第三方托管服务,托管在ourcompany.thirdparty.org
。他们处理 SSL 并拥有一个证书,其主题为 ,thirdparty.org
并具有主题备用名称*.thirdparty.org
。
这家第三方公司还提供了添加自定义域名的功能。因此,我们在 DNS 配置中添加了 CNAME 记录,现在我们指向了feature2.ourcompany.org
。ourcompany.thirdparty.org
显然,此时访问 时 SSL 不起作用feature2.ourcompany.org
。
然后,第三方公司还要求我们添加 TXT DNS 条目来证明我们是域名的所有者,并且他们能够以某种方式更新他们的 SSL 证书并添加以下主题备用名称:ourcompany.org
和*.ourcompany.org
。
- 这怎么就不是中间人攻击的潜在来源了?(第三方公司现在可以在我们的任何域名上冒充我们)
- 任意第三方公司如何生成有效的 SSL 证书(包括指向他们不拥有的域名的 SAN)?(他们的 SAN 包含的内容比我们添加的 CNAME 域记录多得多)
- 认证机构是否因为指向其域的 CNAME 记录而允许我们的域作为 SAN(在这种情况下,SAN 包含的域怎么会远不止这么多
feature2.ourcompany.org
),或者因为 TXT 条目(在这种情况下,有人可以指出我一个解释这个过程的资源)?
答案1
在检查了我们的 DNS 配置后,似乎认证机构验证了第三方公司证书中的 SAN 条目,因为他们要求我们添加一个 TXT 条目:globalsign-domain-verification=XXXXXXX
,其中 XXXXXXX 是 GlobalSign 提供给第三方公司的密钥(关于 GlobalSign 此功能的文档很难找到,但我可以找到一些这里)这回答了第2和第3个问题。
至于第一个,似乎 TXT 条目被设置为二级域名,第三方公司现在被授权在其证书的 SAN 条目中包含二级域名以及其下的任何三级域名。
答案2
第三方公司可能需要验证来证明您有权访问该域名(就像 godaddy 在简单的 ssl 证书上进行验证一样)
这确实不是意味着他们可以访问您的域名和/或可以接管您的域名。但这也不意味着他们可以对通过您自己的证书建立的连接进行中间人攻击 (mitm)。它只是一个单独的证书,当您使用匹配的 DNS 记录指向他们的服务器时,他们会分发该证书。由于 sni(服务器名称指示)如今得到了很好的支持,因此在单个主机/地址上处理许多证书相当常见。