每个子域都需要自己的 SSL 证书吗?

use*_*407 74 ssl subdomain ssl-certificate

我正在创建一个 websocket 服务器,它将在ws.mysite.example. 我希望网络套接​​字服务器既是 SSL 加密的又domain.example是 SSL 加密的。我是否需要为我创建的每个子域购买新证书?我创建的每个子域都需要一个专用 IP 地址吗?我可能会拥有多个子域。

我正在使用在 Ubuntu 上运行的 NGINX 和 Gunicorn。

小智 81

我会分两步回答这个问题...

您是否需要每个子域的 SSL 证书?

是和否,这取决于。您的标准 SSL 证书将用于单个域,例如www.domain.example. 除了标准的单域证书之外,您还可以使用不同类型的证书:通配符和多域证书。

  • 一个通配符证书会发出类似的东西*.domain.example和客户端将其视为有效的任何域与末端domain.example,如www.domain.examplews.domain.example

  • 一个多域证书的有效期为域名的预定义列表。它通过使用证书的主题备用名称字段来做到这一点。例如,你可以告诉一个CA要多域名证书的domain.examplews.mysite.example。这将允许它用于两个域名。

如果这些选项都不适合您,那么您需要拥有两个不同的 SSL 证书。

每个子域都需要一个专用 IP 吗?

同样,这是一个是也不是……这完全取决于您的 Web/应用程序服务器。我是一个 Windows 人,所以我将用 IIS 示例来回答。

  • 如果您运行的是 IIS7 或更早版本,那么您将被迫将 SSL 证书绑定到一个 IP,并且您不能将多个证书分配给一个 IP。如果您为每个子域使用专用 SSL 证书,这将导致您需要为每个子域使用不同的 IP。如果您使用的是多域证书或通配符证书,那么您可以使用单个 IP,因为您一开始只有一个 SSL 证书。

  • 如果您运行的是 IIS8 或更高版本,则同样适用。但是,IIS8+ 包括对称为服务器名称指示 (SNI) 的支持。SNI 允许您将 SSL 证书绑定到主机名,而不是 IP。因此,用于发出请求的主机名(服务器名称)用于指示 IIS 应为请求使用哪个 SSL 证书。

  • 如果您使用单个 IP,那么您可以配置网站以响应对特定主机名的请求。

我知道 Apache 和 Tomcat 也支持 SNI,但我对它们不够熟悉,不知道哪些版本支持它。

底线

根据您的应用程序/网络服务器以及您能够获得的 SSL 证书类型,将决定您的选择。


Gom*_*moX 11

您可以获得每个子域的证书、多子域证书或通配符证书(用于*.yoursite.example)。

不过,它们通常比普通证书的成本要高得多,而且由于您共享一个证书,因此从安全角度来看,它们通常不是最佳选择,除非您托管一种anything.mydomain.example应用程序,而它们是唯一可行的选择。

如果您有支持SNI 的 Web 服务器,您也不需要多个 IP 地址。这就是说,SNI 仅在现代浏览器中受支持(IE6 及以下版本无法使用它)。最新版本的 Nginx 和 Apache 透明地支持 SNI(只需添加启用 SSL 的虚拟主机)。

  • 为所有主机共享的单个证书会将任何违反证书的行为转化为域级安全威胁,而不仅仅是影响证书附加到的任何子域。例如,用于 WordPress 安装的 www.yoursite.com 的证书与用于安全信用卡处理应用程序 Payments.yoursite.com 的证书相同。如果第一个泄漏,第二个就会受到损害。 (5认同)