https sni介绍

https sni介绍

什么是SNI?

SNI全称是 Server Name Indication,它是TLS协议的一个扩展,在TLS握手时用来标记客户端的关键信息。https通常使用SNI标记请求域名或主机名,web server能根据SNI快速识别出请求地址,进而实现CDN、WAF、HTTP代理等一些重要特性(SNI是TLS协议扩展,非http服务的TCP+TLS也可以使用SNI完成一些特定功能)。

SNI的作用

曾经,在无SNI或基础库不支持SNI的年代,假如我们要开发一个web代理,这个代理是CDN或WAF系统的一个基础功能。

800_auto


每个用户系统都接入到web代理系统,由于不支持SNI,为了使代理系统能够区分多用户

我们很自然会想到以下解决方案:

一、每个用户分配唯一的IP;

二、多用户共享IP,使用端口区分,例如,http://ip:port/index;

三、多用户共享一个IP,为每个用户分配唯一的子域名(或主机名),使用DNS别名(cname)到子域名,web代理根据Http头部Host携带的主机名标记来识别请求。

方案一,公网IP有限,根本不实用;

方案二,用户体验差,且通http客户端所在网关只开放了80/443端口,导致web无法访问;

方案三,能很好地完成一些http代理能力,这也是目前常用的http代理方案,但却难以实现一些基于https的新特性。

通常CDN或WAF系统并不是简单的http代理

它还包括以下基础功能:



● 能够解析https,且每个用户使用...

点击查看剩余70%

{{collectdata}}

网友评论