DNS重定向需要单独的SSL证书吗?


17

我正在实现一个多租户应用程序,其中我的应用程序托管并提供了租户产品的技术文档。

现在,我正在考虑的方法是-我是主持人的文件docs.<tenant>.mycompany.com,并要求我的房客设置一个CNAME DNS记录指向docs.tenantcompany.comdocs.<tenant>.mycompany.com

我希望该站点使用我的租户的证书启用SSL。我想了解我的租户公司是否具有通配符SSL证书,该证书是否可以在此设置下使用,还是需要购买新的SSL证书docs.tenantcompany.com


只是为了澄清一下,您是否有* .mycompany.com的通配符?
zymhan

@WildVelociraptor是的,我确实有一个通配符SSL证书,用于*.mycompany.com
codematix

@codematix为免生任何疑问,的通配符证书*.example.com 将不匹配 docs.tenantname.example.com!通配符仅对一个“子域”有效;例如,它将匹配 docs-tenantname.example.com。亚马逊的S3就是一个很好的例子:*.s3.amazonaws.com访问带有期限的存储桶时,证书会失败,例如www.example.com(其结尾为,如主机名www.example.com.s3.amazonaws.com);S3 Web托管需要此类存储桶名称。
Calrion

请注意,使用指向您自己的服务器的cname意味着您可以避免需要租户提供的证书。一些证书提供者(包括letencrypt.org)支持通过https验证域所有权。就安全最佳实践而言,这种方法要优越得多(已经在serverfault.com/a/765957/4480中进行了讨论)。允许租户提供自己的证书是可以的(尽管在租户中自己生成证书比较容易),但是他们不应提供通配符证书。
布莱恩(Brian)

Answers:


39

证书名称必须与用户在浏览器中输入的名称匹配,而不是“最终” DNS记录。如果用户输入,docs.tenantcompany.com则您的SSL证书必须包含该内容。

如果docs.tenantcompany.com是一个CNAME到foo.example.com,该证书也没有需要覆盖foo.example.com,只docs.tenantcompany.com


25

杰森的答案是正确的。但是,仅在此处澄清一些术语,“ DNS重定向”有点用词不当。DNS具有CNAME记录(又名别名),它是指向另一个名称的名称。但这不是重定向。从名称到名称到IP的转换都在后台进行,您的浏览器只关心初始名称。

唯一进行重定向的是Web服务器,其中服务器明确告诉您的浏览器转到其他地方。如果你的Web服务器真正做一个重定向到其他人的名字,你真正需要为这两个名字的证书,因为你的浏览器将最终分别连接到他们两个。


2
谢谢你纠正我。是的,它不是重定向而是CNAME别名。
codematix

我的客户有一个Server Awith域example.com。我为他建立了一个网站,并在中维护了该网站Server B。我的客户端配置了他的DNS A Record,该DNS 指向dog.example.com我的服务器的IP地址Server B。现在我的客户正在获取SSL dog.example.com。我的问题是,我的客户必须给我SSL证书才能放入Server B吗?还是他只需要把它放进去Server A?还是我们该怎么办?我们都对此感到困惑,谢谢!
user2875289

1
如果“ A”记录dog.example.com直接指向您服务器的IP,则“是”。您的服务器必须包含该名称的证书和私钥。您的示例中的服务器A无关紧要。
Ryan Bolger '18

@RyanBolger是的,就像您说的那样。我的客户为此申请了证书dog.example.com,并将证书和私钥发送给我。我将它们放入其中Server B并配置Nginx以使用它们。现在一切正常。谢谢!
user2875289'9

只是关于技术要点的注释;因为现在有了“ ALIAS”记录,所以我也不会说CNAME是别名;]
Garet Claborn

9

我想了解我的租户公司是否具有通配符SSL证书,该证书可以在此设置下使用,还是必须购买新的SSL证书docs.tenantcompany.com

简短答案:否。如果您的租户公司名称中包含通配符*.tenantcompany.com,则足以在您的服务器上安装该名称以涵盖通过该名称进行的访问。是否要这样做是另一回事。

如果始终通过名称进行访问,则名称中的证书docs.<tenant>.mycompany.com(例如直接证书或通配符*.<tenant>.mycompany.com)将无用docs.tenantcompany.com


更长的答案

假设您https://docs.tenantcompany.com使用合理的浏览器进行浏览。浏览器通过HTTP协议运行TLS。它特别关心两件事。那:

  • 浏览器和操作系统的DNS子系统返回合适主机的IP地址,该主机正在本地网络或Internet上其他位置的合适端口上运行Web服务器。对于HTTPS(安全)流量,443除非URL中另外覆盖,否则默认端口为。

  • TLS握手在浏览器和远程服务器之间发生时,服务器将提供受信任的证书,该证书允许它在请求的地址(docs.tenantcompany.com)上提供TLS服务。

域名解析

浏览器将DNS视为黑框。它调用合适的DNS库,以请求从友好的完全限定域名(FQDN)映射到合适的IP地址(v4或v6)。不管它如何获取该IP地址。如果CNAME原始记录和AAAAA记录之间的DNS中有20 个别名,则DNS解析程序将跟踪它们,直到获得IP地址为止。

TLS

当浏览器执行TLS握手时,它需要验证与之通信的服务器是否有权在所请求的FQDN上提供安全的网站服务docs.tenantcompany.com

请记住:浏览器不在乎docs.<tenant>.mycompany.com-DNS解析器已通过CNAME记录提取了所有有关间接的知识。

我们授权服务器在其上提供安全会话docs.tenantcompany.com的方法是通过SSL证书进行的,该证书由已在浏览器的根证书存储区中建立了先前信任关系的授权机构签名。这并不总是服务器对客户端身份验证的最强形式-集中式CA模型中可能会出错-但是这是我们目前所拥有的最好的。

这里还有两个警告:

密钥共享

许多商业SSL证书供应商只会签署单个签名请求,从而将通配符证书有效地绑定到单个私钥。租户公司可能不愿意在组织外共享此信息,因为拥有私钥的任何人都可能明显损害与租户公司其他安全系统的通信。

一些供应商将在同一证书下签署多个证书签名请求,从而允许在多个服务器和系统上安装单个通配符证书,而无需在它们之间共享私钥。

伪装

如果租户公司向您提供其通配符证书的副本(通过共享私钥或签署自己的CSR),则您可以伪装成<anydomain>.tenantcompany.com,破坏重要的保护措施,以确保tenantcompany.comDNS命名空间中标识的服务器的完整性。从法律/责任的角度来看,这对您和承租人公司而言都是不利的地位。


非常感谢您提供详细的答案。这非常有帮助,并帮助我考虑了我试图做的事情的道德和法律方面。
codematix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.