Answers:
我将分两个步骤进行回答...
每个子域都需要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或更早版本的IIS7,则必须将SSL证书绑定到IP,并且不能将多个证书分配给单个IP。如果您为每个子域使用专用的SSL证书,则这将导致每个子域需要一个不同的IP。如果您使用的是多域证书或通配符证书,那么您就可以摆脱单一IP,因为您一开始只有一个SSL证书。
如果您运行的是IIS8或更高版本,则同样适用。但是,IIS8 +包含对称为服务器名称指示(SNI)的支持。SNI允许您将SSL证书绑定到主机名,而不是IP。因此,用于发出请求的主机名(服务器名称)用于指示IIS应该用于该请求的SSL证书。
如果使用单个IP,则可以配置网站以响应对特定主机名的请求。
我知道Apache和Tomcat也都支持SNI,但我对它们还不够熟悉,以至于不知道哪些版本支持SNI。
底线
根据您的应用程序/ Web服务器以及您能够获得哪种类型的SSL证书,将决定您的选择。
abc.def.domain.com
,也是这样吗?
您可以获得每个子域的证书,多个子域证书或通配符证书(用于*.yoursite.example
)。
但是,它们通常比常规证书花费更多,并且由于您共享一个证书,从安全角度来看,它们通常不是最佳选择,除非您托管的anything.mydomain.example
应用程序是唯一可行的选择。
如果您具有支持SNI的Web服务器,则也不需要多个IP地址。这就是说,SNI仅在现代浏览器中受支持(IE6及以下版本将无法使用)。Nginx和Apache的最新版本透明地支持SNI(只需添加启用SSL的虚拟主机)。