多级子域需要哪些证书?

信息安全 tls 证书
2021-08-10 01:41:16

我正在一个具有多个子域级别的网站上工作。我需要使用 SSL 保护所有这些,并且我正在尝试确定正确的证书策略。

这是我需要保护的内容:

  • foo.com
  • www.foo.com
  • city.state.foo.com 的任意组合。(这些是美国各州。)

我的理解是通配符证书只能涵盖一个“级别”的子域。根据 RFC 2818

名称可能包含通配符 *,它被认为与任何单个域名组件或组件片段匹配。例如,*.a.com 匹配 foo.a.com 但不匹配 bar.foo.a.com。f*.com 匹配 foo.com 但不匹配 bar.com。

认为我需要的是以下证书:

  • *.foo.com, 这将匹配,例如, foo.com, www.foo.com(虽然我不清楚自己是否*.a.com匹配a.com。)
  • *.ny.foo.com匹配new-york.ny.foo.combuffalo.ny.foo.com等。一旦我们的网站扩展为所有州提供服务,我最终将需要 50 个这样的证书来匹配所有州。

我的问题是:

  • 这个方案正确吗?在上面的场景中,如果用户访问ca.foo.com,他们会得到证书*.foo.com*.ca.foo.com
  • 我如何确保用户将所有这些子域视为我们合法拥有的?例如,如果用户访问foo.com, thenmountain-view.ca.foo.com和那些是不同的证书,他们会收到警告吗?有什么方法可以确保他们的浏览器这些证书共享同一个所有者?
4个回答

理论上:

  • a完全*匹配一个级别(因此*.foo.com匹配foo.com
  • 但你可以有几个*名字

因此,如果所有 SSL 实现都忠实地遵循RFC 2818,您只需要三个证书,其名称为:

  • foo.com
  • *.foo.com
  • *.*.foo.com

而且,如果实现真的很擅长遵守 RFC 2818 和 X.509 的复杂性,您甚至可以使用在其主题替代名称扩展中列出上述三个字符串的单个证书。

现在,理论和实践完美匹配……理论上。您可能会对浏览器的实际功能感到惊讶。我建议你试试看;可以使用OpenSSL命令行工具创建一些示例证书(例如,请参阅此页面了解一些指南)。

RFC 6125 是最新的,并不是每个人都实施,但它试图澄清其中一些问题。它收集了 RFC 2818 和其他协议的 RFC 中的身份规范。如果可以的话,我建议遵守 RFC 6125。通配符证书的相关部分是6.4.37.2(实际上不鼓励使用通配符证书)。

从您的问题中不清楚您是否要运行单个 Web 服务器(或者至少能够在单个 IP 地址后面运行它),或者您是否能够为每个站点拥有一个证书(因此是一个 IP 地址每个站点,因为SNI通常没有得到很好的支持)。

您可以拥有一个包含多个主题备用名称 (SAN) 的证书。问题来自带有两个通配符标签的情况,可能没有明确指定(*.*.foo.com)。

如果双通配符有效,则具有以下 3 个 SAN DNS 条目的证书应该有效:

  • foo.com
  • *.foo.com
  • *.*.foo.com

但是,由于它可能不起作用(取决于客户端的实现,这可能不受您的控制),并且由于您可以列出 50 个状态,因此您可能有 52 个 SAN DNS 条目:

  • foo.com
  • *.foo.com
  • *.ny.foo.com
  • ...(每个州一个)

我如何确保用户将所有这些子域视为我们合法拥有的?例如,如果用户访问 foo.com,然后是 mountain-view.ca.foo.com,它们是不同的证书,他们会收到警告吗?有什么方法可以确保他们的浏览器这些证书共享同一个所有者?

这是一个棘手的问题,因为它取决于用户对证书验证过程的熟悉程度。您可以获得扩展验证证书(尽管我认为可能不允许通配符 EV 证书),这将给出一个绿色条。这将在大多数浏览器中给出一些“所有权”标签。在那之后,浏览器的界面本身可能会令人困惑(例如,蓝色栏中的 Firefox 的“由(未知)运行”,这两种方式都没有真正的帮助)。最终,用户可以检查您的证书,以查看证书颁发给了哪些 SAN。但是,我怀疑很多人会这样做并理解它的含义。

http://www.digicert.com/welcome/wildcard-plus.htm

更重要的是,DigiCert WildCard ssl 证书在允许您保护域的任何子域方面是独一无二的,包括使用一个证书的多个级别的子域。例如,*.digicert.com com 的通配符可以包含 server1.sub.mail.digicert.com 作为主题备用名称。

您可以使用通配符证书,也可以使用具有备用域名的证书。就个人而言,我使用 StartSSL 的证书,它允许我将所有域都列在一个证书上。我有 10 个通配符域和 15 个其他 ADN 都在同一个证书上,这样我就可以在我的服务器上托管的站点上使用 SSL。