您是否需要为要加密的每个子域 "level" 使用通配符 SSL 证书?

Do you need a wildcard SSL cert for each sub-domain "level" you want to encrypt?

假设我拥有 example.com 并且我购买了适用于 *.example.com 的通配符 SSL 证书.管理层现在想要创建 "companion" 个站点以覆盖现有站点。因此,如果我有 foo.example.combar.example.com 他们可能还希望我创建 meow.foo.example.com and woof.bar.example.com.

现有的通配符证书适用于子域站点,正如我们一直以来所做的那样。我刚刚了解到它不适用于子子域站点。是否可以为 *.*.example.com?

创建通配符证书

子子域是否需要额外的通配符证书?那么如果你想保护X等级,你需要X证书吗?

免责声明:我花了一段时间研究这个问题,但是在 SO 上有很多看似矛盾的 questiona/answers,所以我对再次问这个问题感到很遗憾,但我不想经历这样的麻烦购买后才发现是我弄错了。

https://security.stackexchange.com/a/10540/68042

您只需要为每个级别的子域使用单独的证书,名称为:

  • example.com
  • *.example.com
  • ..example.com
  • ..*.example.com

理论上,在 Subject Alt Name 扩展名中包含所有这些条目的单个证书就可以了,但在某些情况下可能不起作用。单独的证书更安全。

要使用单个证书(对于 *.example.com),您可以使用名称 meow-foo.example.com 而不是 meow.foo.example.com

您可以申请 Multi-domain 通配符 SSL 证书,它将保护您的 sub-sub- domain.It 可以保护通配符以下

- *.mydomain.tld
- *.sub1.mydomain.tld
- *.sub2.mydomain.tld
- *.anydomain.com

虽然可能有一些实现允许多个通配符,但实际上答案是不,多个通配符是不允许的

RFC 6125 (section 6.4.3) 试图澄清常见的事实规则,并提炼出核心必须有效的规则:

  • 如果第一个字符不是 * 则执行文字匹配。 (non-wildcard).
  • 如果第二个字符不是 . 则不匹配(无效通配符)
  • 查找匹配候选中的第一个 .,并且 literal-match 从 dNSName 值中的第二个字符开始。

所以 *.*.example.com 不会匹配 a.b.example.com 因为 .*.example.com != .b.example.com.

当然,有些客户端可能以不同的方式实现了他们的匹配逻辑。但是指望任何比这种解释更宽松的东西都会导致一些客户说它不匹配,而你希望它会匹配。

(好吧,RFC 6125 第 6.4.3 节没有任何实际的 MUST;但如果您尊重 SHOULD NOT 并且不遵循 MAY,但确实支持通配符匹配,那么您最终会遇到上述情况。)