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.example或ws.domain.example。
一个多域证书的有效期为域名的预定义列表。它通过使用证书的主题备用名称字段来做到这一点。例如,你可以告诉一个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,但我对它们不够熟悉,不知道哪些版本支持它。
底线
根据您的应用程序/网络服务器以及您能够获得的 SSL 证书类型,将决定您的选择。
Gom*_*moX 11
您可以获得每个子域的证书、多子域证书或通配符证书(用于*.yoursite.example)。
不过,它们通常比普通证书的成本要高得多,而且由于您共享一个证书,因此从安全角度来看,它们通常不是最佳选择,除非您托管一种anything.mydomain.example应用程序,而它们是唯一可行的选择。
如果您有支持SNI 的 Web 服务器,您也不需要多个 IP 地址。这就是说,SNI 仅在现代浏览器中受支持(IE6 及以下版本无法使用它)。最新版本的 Nginx 和 Apache 透明地支持 SNI(只需添加启用 SSL 的虚拟主机)。