支持SNI部署方式的浏览器说明

一、SNI背景

根据HTTPS的工作原理,浏览器在访问使用HTTPS协议的站点时,需与服务器建立SSL连接,建立连接的第一步是请求域名证书,此时如服务器部署了多个证书,因客户端还未发送实际的数据请求,服务器无法区分请求的域名,可能出现服务器返回证书与请求域名不匹配的问题。

SNI(Server Name Indication)是为了解决一台服务器部署多个域名证书的SSL/TLS扩展。一句话简述它的工作原理就是,在与服务器建立SSL连接时携带要访问站点的域名信息,使服务器可根据域名返回匹配的证书。目前,大多数操作系统和浏览器都已经很好地支持SNI扩展,OpenSSL 0.9.8已内置这一功能,新版的Nginx也已支持SNI。

二、客户端不支持SNI如何解决

SNI是一个很便利的扩展,对于不支持SNI的客户端有以下两个解决方案:

    1. 用户升级或使用新版本的浏览器,如Chrome、Firefox等,或使用Windows 7及更高版本Windows操作系统。
    2. 联系知道创宇云防御商务人员购买独享SSL服务。

三、常见的SNI支持情况

1.桌面版浏览器支持

    • Chrome 5及以上版本
    • Chrome 6及以上版本(Windows XP)
    • Firefox 2及以上版本
    • IE 7及以上版本(运行在Windows Vista/Server 2008及以上版本版本系统中,在XP系统中任何版本的IE浏览器都不支持SNI
    • Konqueror 4.7 及以上版本
    • Opera 8 及以上版本
    • Safari 3.0 on Windows Vista/Server 2008 及以上版本, or Mac OS X 10.5.6 及以上版本

2.手机端浏览器支持

    • Android Browser on 3.0 Honeycomb 及以上版本
    • iOS Safari on iOS 4 及以上版本
    • Windows Phone 7 及以上版本

3.服务器支持

    •  Apache 2.2.12 及以上版本
    • Apache Traffic Server 3.2.0 及以上版本
    • Cherokee
    • HAProxy 1.5 及以上版本
    • IIS 8.0 及以上版本
    • lighttpd 1.4.24 及以上版本
    • LiteSpeed 4.1 及以上版本
    • nginx 0.5.32 及以上版本

4.命令行支持

    • cURL 7.18.1 及以上版本
    • wget 1.14 及以上版本

5.库支持

    •  GNU TLS
    • JSSE (Oracle Java) 7 及以上版本, 仅作为客户端
    • libcurl 7.18.1 及以上版本
    • NSS 3.1.1 及以上版本
    • OpenSSL 0.9.8j 及以上版本
    • OpenSSL 0.9.8f 及以上版本,需配置flag
    • Qt 4.8 及以上版本

注意: SNI兼容TLS1.0及以上的协议,但不被SSL支持。

知道创宇云防御平台支持设置取源SNI功能,详情可参考:http://help.yunaq.com/faq/2457/index.html