SSL安全证书

同一IP地址上运行多个证书

你需要SNI——服务器名称指示

什么是SNI?服务器名称指示是SSL的一个重要组成部分。SNI允许多个网站存在于同一个IP地址上。 如果没有SNI,每个主机名都需要自己的IP地址才能安装SSL证书。

为什么基于名称的主机不能很好地处理SSL

在过去的HTTP时代,解决与基于名称的主机在同一IP地址上托管的多个网站的问题并不难。当一个客户端请求某特定网站时,它使用一个唯一的HTTP头,包括预期的主机名。作为响应,服务器将该头部与预期的网站匹配并在那里传送用户。
可惜的是,当你使用HTTPS时是无法故技重施的。因为在客户端和服务器之间可以建立加密连接之前,SSL需要SSL握手。包含目标主机名的HTTP头只有在握手完成之后才能被下载,这意味着服务器不知道要连接到哪个网站。

那么SNI干些什么?

服务器名称指示是对SSL / TLS协议的扩展,允许在单个IP地址上承载多个SSL证书。 SNI这样做的方法是将HTTP头插入到SSL握手中。 由于服务器可以在握手期间看到预期的主机名,因此可以将客户端连接到请求的网站。
在SNI出现之前,加密每个网站都必须具有唯一的IP地址。这毫无疑问十分昂贵,还具备快速消费IPv4 IP地址的意想不到的副作用。
我们知道,IP地址的数量是有限的,IPv4,为参与使用Internet协议进行通信的计算机网络的每个设备分配地址。一个IPv4的IP地址长这样:

世界上一共只有大约40亿万个IPv4 IP地址,所有地址终会被消耗殆尽。在SNI出现之前,消耗的速度比现在要快得多。SNI的存在无疑是在给IPv4续命。
最终,互联网将迁移到IPv6。届时将会有超过3400亿万个IPv6地址供人使用。

SNI的前景如何?

SNI最大的缺点是其扩展性。也因此,刚开始人们并不看好这项技术。不过事实证明,这种担忧在很大程度上是没有根据的。根据Akamai的说法,今天几乎98%的客户要求支持HTTPS的网站支持SNI。