我正在研究是否可以通过HTTPS在一个服务器上托管多个域,但是对于每个域,我有一个不同的证书。
在这种情况下,我需要知道传入连接的域,所以在SSL握手的第一部分,它是否有我需要的信息来为该域发回正确的证书?
发布于 2016-02-10 03:08:22
是的,只要服务器和客户端支持服务器名称指示(或SNI)扩展.此扩展允许对HTTPS进行虚拟托管,其中您有多个独立的域和绑定到单个IP地址的证书。
如今,大多数客户都支持SNI。您可能会遇到问题的地方是,如果您有使用Windows、旧版本的Android或Java 6等平台的老客户端。
发布于 2016-02-10 05:58:22
没有SNI,域首先以明文形式出现在TLS握手的Server中(在证书字段的rdnSequence中)。
对于SNI,域首先以明文形式出现在TLS握手的客户端Hello中(在SNI字段中)。
来源:我用TLS启动了apache2,并在实现SNI (apache2中的虚拟主机)之前和之后捕获了数据包。
发布于 2016-02-10 12:06:56
除了SNI之外,还有一个获得多域证书的选项。有几个证书提供商提供这样的证书(不是为任何人代言,Google是您的朋友)。
使用多域证书,您不需要在握手开始时知道域名,因为证书对列出的所有域名都有效。
下面是关于这样的证书是如何样子的示例:

https://security.stackexchange.com/questions/113267
复制相似问题