我正在创建一个 websocket 服务器,它将在ws.mysite.example
. 我希望 Web 套接字服务器进行 SSL 加密以及domain.example
SSL 加密。我是否需要为我创建的每个子域购买新证书?我创建的每个子域都需要一个专用 IP 地址吗?我可能会有多个子域。
我正在使用在 Ubuntu 上运行的 NGINX 和 Gunicorn。
我正在创建一个 websocket 服务器,它将在ws.mysite.example
. 我希望 Web 套接字服务器进行 SSL 加密以及domain.example
SSL 加密。我是否需要为我创建的每个子域购买新证书?我创建的每个子域都需要一个专用 IP 地址吗?我可能会有多个子域。
我正在使用在 Ubuntu 上运行的 NGINX 和 Gunicorn。
我将分两步回答这个问题......
您是否需要为每个子域提供 SSL 证书?
是和否,这取决于。您的标准 SSL 证书将用于单个域,例如
www.domain.example
. 除了标准的单域证书之外,您还可以使用不同类型的证书:通配符和多域证书。将为类似的东西颁发通配符证书
*.domain.example
,客户端会将其视为对任何以 结尾的域有效domain.example
,例如www.domain.example
orws.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,但我对它们还不够熟悉,不知道哪些版本支持它。
底线
根据您的应用程序/Web 服务器以及您能够获得的 SSL 证书类型将决定您的选择。
您可以获得每个子域的证书、多个子域的证书或通配符证书(用于
*.yoursite.example
)。不过,它们通常比普通证书贵很多,而且因为您共享一个证书,所以从安全的角度来看,它们通常不是最佳选择,除非您托管一种
anything.mydomain.example
应用程序,而它们是唯一可行的选择。如果您有支持 SNI 的 Web 服务器,您也不需要多个 IP 地址。这就是说,SNI 仅在现代浏览器中受支持(IE6 及更低版本无法使用它)。最新版本的 Nginx 和 Apache 透明地支持 SNI(只需添加启用 SSL 的虚拟主机)。
我建议“ getssl ”为托管在另一台服务器上的子域创建 SSL 证书。
您可以使用“ getssl ”为使用letsencrypt.org的子域创建SSL证书
您需要为每个子域提供单独的证书,或者您可以购买通配符证书
*.domain.example
(关于 IP,这取决于您如何设置服务器。您可以使用主机名规则从同一个 IP 为多个站点提供服务,或者为每个站点使用唯一的 IP。两种方法各有利弊。