通常情况下,域名解析后能得到1个IP或者多个IP,但有些小型站点,为了节省成本,他们把多个域名解析到了一个IP上,那这时候,多个域名上如何部署呢?会遇到什么问题呢?这里就需要使用到了SNI。

随着计算机网络的高速发展,IP越来越缺乏,IETF为了更好的提供SSL服务,在TLS协议中,增加了SNI(Server Name Indication服务器名称指示)这种增强属性,旨在SSL通信中,能够使用服务器名称来区分使用者身份。这使得一台服务器上相同的IP地址和端口允许使用多张证书,从而允许多个安全的站点(https站点)在相同的IP地址上,不需要使用相同的SSL证书。这相当于允许虚拟主机用于https。

对SNI的支持,是需要浏览器和服务器双方共同提供的。目前来说支持的是:

TLS/SNI支持的浏览器

  • IE7之后的版本(windows vista以后的版本,windows xp的话IE8也不支持)

  • 火狐2.0以后的版本

  • Opera浏览器8.0后的版本(2005年)(必须设定支持TLS1.1)

  • Chrome(vista之后,xp中的版本6,OS X10.5.7以后的Chrome5.0.342.1)

  • safari3.0之后(os x10.5.6之后,vista以后,ios4.0以后)

  • Konqueror/KDE 4.7之后

  • Android浏览器 (Android 3.0以后版本)

  • Windows Phone7

  • MicroB

Web服务器

  • Apache 2.2.12之后+mod_ssl及mod_gnutls

  • Apache Traffic Server 3.2.0以后

  • Cherokee(需编译SSL功能)

  • lighttpd1.4.24之后版本

  • nginx和openssl

  • F5负载均衡设备11.1及之后的所有版本

  • LiteSpeed4.1 及以后版本

  • tomcat7及以后版本

  • IIS8

  • Citrix NetScaler9.3以后

  • RadwareAlteon ADC (AlteonOS 28.1 以后系统)

尽管所以SNI已经被大部分浏览器和服务器支持,但目前现状还是会造成部分用户不兼容的现象。这个时候,可以选择我们多域名证书来完美解决这个问题。