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

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

我正在创建一个将运行于 的 websocket 服务器ws.mysite.example。我希望 web 套接字服务器既能进行 SSL 加密,又能domain.example进行 SSL 加密。我是否需要为创建的每个子域购买新证书?我是否需要为创建的每个子域提供专用 IP 地址?我可能会有多个子域。

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

答案1

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

每个子域名都需要 SSL 证书吗?

是也不是,视情况而定。您的标准 SSL 证书将用于单个域,例如www.domain.example。除了标准单域证书外,您还可以获得不同类型的证书:通配符和多域证书。

  • A通配符证书将针对类似的内容发出*.domain.example,并且客户端将把它视为对以 结尾的任何域名有效domain.example,例如www.domain.examplews.domain.example

  • A多域名证书对预定义的域名列表有效。它通过使用证书的“主题备用名称”字段来实现这一点。例如,您可以告诉 CA 您想要一个针对domain.example和 的多域证书ws.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,但我对它们不够熟悉,不知道哪些版本支持它。

结论

您的选择将取决于您的应用程序/Web 服务器以及您能够获得的 SSL 证书类型。

答案2

您可以为每个子域名获取一个证书,也可以获取多个子域名证书或通配符证书(为了*.yoursite.example)。

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

如果你有支持 SNI 的 Web 服务器。话虽如此,SNI 仅在现代浏览器中受支持(IE6 及以下版本不支持它)。Nginx 和 Apache 的最新版本透明地支持 SNI(只需添加启用 SSL 的虚拟主机)。

答案3

我建议 ”得到“为另一台服务器上托管的子域创建 SSL 证书。

Let't say: 
You have a primary domain (example.com) with SSL Cert on SERVER A. 
You have a subdomain (vm1.example.com) without SSL Cert on SERVER B.

您可以使用 ”得到“为使用 letsencrypt.org 的子域名创建 SSL 证书

答案4

您要么需要为每个子域名获取单独的证书,要么可以购买通配符证书(*.domain.example) - 价格更昂贵,但如果您托管大量子域名则更有意义。

至于 IP,这取决于您如何设置服务器。您可以使用主机名规则从同一 IP 为多个站点提供服务,也可以为每个站点使用唯一的 IP。这两种方法各有利弊。

相关内容