浅谈HTTPS SNI

来源: 云巴巴 2021-12-17 11:08:52

什么是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系统的一个基础功能。

图片

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

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

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

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

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

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

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

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

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

它还包括以下基础功能:

● 能够解析https,且每个用户使用的自有证书(用户把证书上传到代理系统)

● 需要对每个https请求的内容进行安全检查

● 压缩、缓存、回源等其它功能

要实现上述功能,web代理在收到http请求时首先要知道使用哪个证书来跟客户端进行握手,只有握手成功才能从TLS解密出http内容,这是问题的根本。

因为https是通过TCP+TLS传输的,web代理收到的http内容经过加密的数据,无法确定TCP连接是谁发过来的,web代理拥有众多用户的证书,但究竟拿哪一个证书进行TLS握手?如果每个证书都尝试一遍?这样效率也太低了!但我们发现,尽管TLS传输内容是加密的,但在建立会话的握手阶段,它的报文头是明文(Hello报文),如果客户端能在TLS握手报文里放置标记自已身份的ID那问题就会变得十分简单。

为了解决类似上述的场景,TLS扩展实现了

Server Name Indication(SNI)

图片

Web应用通常使用SNI携带域名或主机名,除了上述的证书加载,还可以实现其它功能,例如,在无法得到用户的SSL证书情况下,网关只需扫描TLS和SNI就可以实现域名安全检查、域备是否备案等。另外,物联网也可以利用SNI标记设备ID,实现TLS的双向认证。

SNI支持情况

 目前绝对大多数浏览器、http服务器以及其所依赖的加密库都支持SNI,下面的SNI支持情况来源于互联网,仅供参考:

桌面浏览器

● Chrome 5及以上版本、Chrome 6及以上版本(Windows XP)

●  Firefox 2及以上版本

●  IE 7及以上版本(运行在Windows Vista

/Server12008及以上版本版本系统中,在XP系统中任何版本的IE浏览器都不支持SNI)

●  Konqueror 4.7 及以上版本

●  Opera 8 及以上版本

● Safari 3.0 on Windows Vista/Server 2008 及以上版本, or Mac OS X 10.5.6 及以上版本

移动端浏览器

● Android Browser on 3.0 Honeycomb 及以上版本

● iOS Safari on iOS 4 及以上版本

● Windows Phone 7 及以上版本

服务器

● 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 及以上版本

命令行

● cURL 7.18.1 及以上版本

● wget 1.14 及以上版本

程序公共库

● 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 及以上版本

更多产品了解

欢迎扫码加入云巴巴企业数字化交流服务群

产品交流、问题咨询、专业测评

都在这里!

 

评论列表

为你推荐

你知道什么是内容分发网络吗?

你知道什么是内容分发网络吗?

内容分发网络所属于互联网技术,准确的说可以叫做内容分发网络编辑,简称CDN,它的全称是Content Delivery Network,即内容分发网络。其基本思路是,尽可能避开互联网上所有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快,

2020-04-27 18:05:06

“内容分发网络”应用、特点、功能等问题

“内容分发网络”应用、特点、功能等问题

我们来谈一下关于内容分发网络的应用举例、主要特点、关键功能等内容。     应用举例     新浪、网易等大型企业网站是国内访问量较高的,均使用CDN网络发展加速信息技术,虽然我们网站的访问巨大,但无论在什么不同地方进行访问都会感觉速度可以很快。

2020-04-27 17:18:32

CDN如何负载均衡流量?浅谈CDN负载均衡技术

CDN如何负载均衡流量?浅谈CDN负载均衡技术

负载均衡的目的是在多个服务器之间平均分配网络信息流量。负载均衡可以基于基于硬件或软件,CDN负载均衡数据中心可用服务器池的分配传入的请求,以确保最有效的方式来应对流量高峰。 通过CDN负载均衡,可以提高处理速度,有效地利用服务器容量。

2020-04-08 17:09:34

盘点腾讯云CDN在应用过程中的优势(一)

盘点腾讯云CDN在应用过程中的优势(一)

今年是腾讯云CDN商用的第8年,腾讯云产研团队用心倾听用户反馈,通过不断的创新和努力,对CDN产品进行了诸多改造,更新了更多人性化的功能。下面就为您盘点更新后的腾讯云CDN产品在应用过程中的优势。

2022-11-24 11:04:13

网站使用CDN有什么作用?优化网页加载速度

网站使用CDN有什么作用?优化网页加载速度

cdn即内容进行分发网络,是一个中转站,在给网站主提供一定方便的同时,用户也可以充分享受到一定的方便,在提供打开网站和访问速度上面都有大大的提升,cdn加速的目地是使用户可就近原则获得需要的內容,处理 Internet网络拥堵的情况,提高用户访问网站的响应

2020-04-08 17:49:26

5G视频爆发,寻找合适的CDN服务已刻不容缓

5G视频爆发,寻找合适的CDN服务已刻不容缓

随着5G,光纤,智能手机的普及,网络视频的业务越来越受欢迎,特别是受本次新冠肺炎疫情发展影响,在线看剧、视频会议、视频办公、视频教学教学等几乎成为了一个时下最主流的交流活动形式。 但在线视频流量的激增也带来了一些问题,

2020-04-08 17:45:27

严选云产品

堆雪球私域管理系统 堆雪球私域管理系统,高效稳定地添加客户,最大限度避免风控。实现对微信粉丝资源的高效灵活分配,客户二次分配无感转接可以大幅提高客户资源利用率。批量分组,分组更直观,营销更灵活,更有针对性。
堡垒机 天玥运维安全网关(堡垒机)能够对运维人员维护过程进行全面跟踪、控制、记录、回放;支持细粒度配置运维人员的访问权限,实时阻断违规、越权的访问行为,同时提供维护人员操作的全过程的记录与报告;系统支持对加密与图形协议进行审计,消除了传统行为审计系统中的审计盲点,
金蝶云星辰×灵当CRM融合解决方案 金蝶云星辰×灵当CRM融合解决方案,线索转化为客户,支持精细化运营,一键回填工商信息,多维度查重清洗防撞单。配置参数灵活多样,实现多种需求组合,签约全流程自定义,合同可添加附件、提交审批、查询物流。库存、财务核对数据易提取,服务合同,一键查询关联信息。
万兴科技全能PDF编辑软件 万兴 PDF 采用类似 Word 界面和工具条设计,集格式转换、再编辑、分发、加解密、阅读、修改、批注、填表单、电子签名、水印等功能于一体,具有易操作、高效、功能全等特征,帮助全球超过 100 万家企业不再依赖 Adobe Acrobat。
径硕科技MA4.0营销获客平台 径硕科技MA4.0营销获客平台为特定对象,提供有相关性的内容,通过其个性化体验达成营销转化。技术营销,不断提升范式内精准刻度。随企业营收增⻓⽽不断精进的技术营销,结合企业所处的不同数字营销阶段和内部协同度,对营收轮盘的指标制定和完善是动态发展的过程。
腾讯云物业大模型智能客服 腾讯云物业大模型智能客服建立统一的客户服务体系,实现一客一档,全面覆盖物业管理业务场景,实现全流程跟进及管控,提高企业运转效率。沉淀客户画像、智能洞察客户偏好,高效服务客户。处理重复性客户接待问题,辅助人工接待提高服务质量。

推荐视频

甄选10000+数字化产品 为您免费使用

申请试用