什么是服务器名称指示
通常情况下,域名解析后能得到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已经被大部分浏览器和服务器支持,但目前现状还是会造成部分用户不兼容的现象。这个时候,可以选择我们多域名证书来完美解决这个问题。