![我可以在同一域的多个主机名上使用单个(非通配符)SSL 证书吗?](https://linux22.com/image/570573/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%9C%A8%E5%90%8C%E4%B8%80%E5%9F%9F%E7%9A%84%E5%A4%9A%E4%B8%AA%E4%B8%BB%E6%9C%BA%E5%90%8D%E4%B8%8A%E4%BD%BF%E7%94%A8%E5%8D%95%E4%B8%AA%EF%BC%88%E9%9D%9E%E9%80%9A%E9%85%8D%E7%AC%A6%EF%BC%89SSL%20%E8%AF%81%E4%B9%A6%E5%90%97%EF%BC%9F.png)
如果我有test.example.com
两个prod.example.com
主机名,但域名相同,我可以在两台机器上使用相同的 SSL 证书吗?
过去,当我尝试使用prod.example.com
证书test.example.com
时,浏览器会发出主机不匹配警告,这让我相信我需要通配符(或者多个不同的证书)。(也许我的错误在于生成 CSR 而prod.example.com
不是简单地生成example.com
?)
但各 SSL 供应商的网站都提到需要通配符证书子域名,这根本不是我所用的。
他们的语言难道根本不正确吗?(我愤世嫉俗的一面想知道这是否有助于供应商销售更昂贵的证书......)
答案1
您需要一个支持“主题备用名称”字段的证书,并且在其中包含 test.example.com,以便它在您描述的示例中发挥作用。
除非是通配符证书(您明确表示您没有通配符证书),否则证书example.com
不会像您描述的那样神奇地起作用。如果您不打算获得通配符,则需要列出每个子域的 SAN 字段。*.example.com
答案2
他们的语言难道根本不正确吗?
不,是你的。
如果我有
test.example.com
(prod.example.com
两个主机名,但域名相同)
这些都是不是相同的域名。它们都是分离域名恰好是子域名的example.com
。
域名是任何DNS 中任何级别都存在的名称,而不仅仅是从域名注册商处获得的名称。
SSL 证书仅可涵盖:
- 确切的域名
- 如上所述,但附加“主题备用名称”,或
- 每个子域,即通配符证书。
因此,您不能仅获得证书example.com
并让其自动覆盖子域。
答案3
首先要澄清的是:您使用的方式中没有子域 - 只有域。或者您可以说您拥有的任何域都是子域。根域是“。”。TLD“com。”是“。”的“子域”。“example.com。”是“com。”的子域……子域是在另一个域内定义的域。但这是相对的,而不是绝对的属性。
通配符证书的适用范围更广,并不是因为它们与域名证书不同,而是因为它们的暴露程度和被破解的可能性。您不是向 SSL CA 支付证书的“费用”,而是支付有限的保险。此保险仅在违规行为是由 CA 对您的证书及其链的处理不当造成的时才涵盖。
如果您只有几个子域名,那么为多个域名购买证书(使用主题备用名称的证书)会更便宜。如果您拥有一个域名的多个子域名,或者您希望添加未知数量的子域名,那么最好购买通配符证书。如果您拥有不同的域名(example1.com、example2.com、example1.us),那么您可以只使用 SAN 证书,或者为每个域名购买一个通配符证书。(例如,您不能为 *.com 购买通配符证书)。
使用 SAN 证书或通配符证书可能会降低配置的安全性,因为这会迫使您使用相同的侦听器,并且很可能使用相同的用户(您可以使用类似 apache 的 mod_suexec 之类的工具以不同的用户身份运行)。因此,如果一个站点受到攻击,可能会导致其他站点受到攻击。如果您拥有不同的证书,则可以以不同的用户身份运行这些应用程序,从而获得更好的安全性。
答案4
如果您的证书prod.example.com
不是通配符证书,那么要在具有域名的服务器上使用它,test.example.com
那么如何停止在%SystemRoot%\System32\drivers\etc\hosts
文件中添加条目,为机器的 IP 提供test.example.com
虚假的域名whatever.prod.example.com
?
这样,prod.example.com
安装到test.example.com
机器上的证书的验证就可以起作用,因为该文件证明了它正在寻找的hosts
(假)主机名。prod.example.com
只是一个想法,因为我自己已经使用这种技术进行开发。