我正在创build一个将在ws.mysite.com
上ws.mysite.com
的websocket服务器。 我希望Web套接字服务器被SSLencryption以及domain.com
被SSLencryption。 我是否需要为每个创build的子域购买新证书? 我需要为每个创build的子域创build一个专用的IP地址吗? 我可能会有不止一个子域名。
我正在使用在Ubuntu上运行的NGINX和Gunicorn。
我会分两步回答
你需要每个子域名的SSL证书吗?
是和否,这取决于。 您的标准SSL证书将用于单个域名,如“www.domain.com”。 除标准单域证书外,还有不同types的证书:通配符和多域证书。
通配符证书将被发布为类似于“*。domain.com”的内容,客户端会将其视为以“domain.com”结尾的任何域名,例如“www.domain.com”或“ws.domain” .COM”。
多域证书是一个对预定义的域名列表有效的证书。 它通过使用cert的使用者备用名称字段来完成。 例如,你可以告诉一个CA你需要一个多域名证书'domain.com'和'ws.mysite.com'。 这将允许它被用于两个域名。
如果这两个选项都不适合您,那么您将需要两个不同的SSL证书。
我是否需要为每个子域专用的IP?
再次,这是一个是和不是…这一切都取决于你的networking/应用服务器。 我是一个Windows的家伙,所以我会回答IIS的例子。
如果您正在运行IIS7或更早版本,则您必须将SSL证书绑定到IP,并且您不能将多个证书分配给单个IP。 这会导致您需要为每个子域使用不同的IP,如果您为每个子域使用专用的SSL证书。 如果您使用的是多域证书或通配证书,那么您只能拥有一个SSL证书即可使用单一IP。
如果您正在运行IIS8或更高版本,则同样适用。 但是,IIS8 +包含了对称为服务器名称指示(SNI)的支持。 SNI允许您将SSL证书绑定到主机名,而不是IP。 因此,用于发出请求的主机名(服务器名称)用于指示IIS应该使用哪个SSL证书进行请求。
如果您使用单个IP,则可以configuration网站以响应特定主机名的请求。
我知道Apache和Tomcat也支持SNI,但我不太了解它们,知道哪些版本支持它。
底线
根据您的应用程序/ Web服务器以及您能够获得哪种types的SSL证书将决定您的选项。
您可以获取每个子域的证书,多个子域证书或通配符证书 (针对*.yoursite.com
)。
它们通常比普通证书花费的成本要高很多,而且由于你共享一个证书,所以从安全的angular度来看,它们通常不是最好的select,除非你在anything.mydomain.com
types的应用程序中只有它们是唯一可操作的select。
如果您拥有支持SNI的Web服务器,则您也不需要多个IP地址。 这就是说,SNI只支持现代浏览器(IE6及以下版本无法使用)。 Nginx和Apache的最新版本透明地支持SNI(只需添加启用了SSL的虚拟主机)。
您将需要为每个子域单独的证书,或者您可以购买通配符证书(* .domain.com) – 更昂贵,但是如果您托pipe很多子域名是有意义的。
关于IP,这取决于你如何设置你的服务器。 您可以使用主机名规则来为同一IP上的多个站点提供服务,也可以为每个站点使用唯一的IP。 这两种方法都有优点和缺点。