TLS SNI,全称为the Transport Layer Security protocol Server Name Indication,支持在同一个服务器上面为不同的域名部署不同的SSL证书,实现多个虚拟主机HTTPS SSL站点共用一个服务器。SHA-1证书即将被SHA256证书取代,SHA-224、SHA-256、SHA-384,和SHA-512并称为SHA-2。
早期的SSL(the Secure Sockets Layer protocol)设计使得一个服务器只能提供一份加密证书,在同一服务器上面为不同的域名分配不同的SSL证书,对于不支持SNI的服务器,只有第一个虚拟主机的SSL证书能够被浏览器识别,用其他域名访问其他虚拟主机建立的SSL加密HTTPS站点,浏览器会告知SSL安全证书有问题不属于对应网站的警告。比如Windows XP IE7 IE8 IE9 此网站的安全证书有问题。
支持SNI的浏览器
Windows XP中,IE6, IE7, IE8都不支持SNI,一个服务器配置了多个HTTPS站点时,只有第一个能正常访问,另外的会报SSL证书有问题。
Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10中的Internet Explorer 7-11, Microsoft Edge都支持SNI
Google Chrome, Mozilla Firefox, Opera, Safari等现代浏览器都支持SNI,
至于国内的360, 百度, 搜狗之类的伪浏览器,只要内核支持,他们都支持……
支持SNI的服务器软件
Apache httpd 2.2.12 + mod_ssl
Nginx
lighttpd 1.4.24+
Microsoft IIS 8 (Internet Information Server 8)
参见:SNI Apache httpd SSL VirtualHost 多站点https协议虚拟主机配置
nginx可以运行nginx -V,如果有TLS SNI support enabled,则支持SNI
- C:\Users\Administrator>nginx -V
- nginx version: nginx/1.10.1
- built by cl 16.00.30319.01 for 80x86
- built with OpenSSL 1.0.2h 3 May 2016
- TLS SNI support enabled
- configure arguments: --with-cc=cl --builddir=objs.msvc8 --with-debug --prefix= -
- -conf-path=conf/nginx.conf --pid-path=logs/nginx.pid --http-log-path=logs/access
- .log --error-log-path=logs/error.log --sbin-path=nginx.exe --http-client-body-te
- mp-path=temp/client_body_temp --http-proxy-temp-path=temp/proxy_temp --http-fast
- cgi-temp-path=temp/fastcgi_temp --http-scgi-temp-path=temp/scgi_temp --http-uwsg
- i-temp-path=temp/uwsgi_temp --with-cc-opt=-DFD_SETSIZE=1024 --with-pcre=objs.msv
- c8/lib/pcre-8.38 --with-zlib=objs.msvc8/lib/zlib-1.2.8 --with-select_module --wi
- th-http_realip_module --with-http_addition_module --with-http_sub_module --with-
- http_dav_module --with-http_stub_status_module --with-http_flv_module --with-htt
- p_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-htt
- p_auth_request_module --with-http_random_index_module --with-http_secure_link_mo
- dule --with-http_slice_module --with-mail --with-stream --with-openssl=objs.msvc
- 8/lib/openssl-1.0.2h --with-openssl-opt=no-asm --with-http_ssl_module --with-mai
- l_ssl_module --with-stream_ssl_module --with-ipv6
复制代码 |
|