服务器名称标识到底是啥?

问题描述

TLS协议扩展SNI(服务器名称标识)字段为空,是否意味一个IP上只有一个网站,而不是托管了多个网站?

答案是肯定的。SNI字段为空,意味着服务器是独占的,只为一个网站提供一对一服务。

HTTP

一个托管服务器(Host Server),如果托管的是明文的http服务,仅仅依靠Http Header里的hostname, domain这些字段,就可以分辨出客户端想要连接哪个网站,从而将客户端请求的网页返还给客户端。

HTTPS

为何Https就不能像Http那样呢?为何需要一个全新的SNI字段来分辨谁才是真正的目的服务器?

因为客户端与托管服务器在建立TCP连接之后,紧接着进行的是TLS安全握手,此时压根没有http什么事。

安全握手最关键的一步,是托管服务器将特定客户服务器的证书推送给客户端,以方便客户端来验证服务器是否合法。

但是,托管服务器上可能有成百上千的客户证书,如果客户端不给点提示,托管服务器如何知道挑选哪个证书推送给客户端?

SNI (Server Name Indication)

有了SNI字段就简单了,里面填入了目标服务器域名,然后托管服务器就可以根据SNI字段信息做为索引,查询数字证书数据库,提取出对应的证书。在Server Hello报文里以“Certificate”消息推送给客户端,客户端验证成功,最后双方协商了一个安全的TLS加密隧道,就可以将明文的Http报文扔到TLS隧道里。

很显然SNI字段位于TLS协议头里,并以明文的方式呈现。SNI字段填入的信息,由客户端从http里协议头里提取,并赋值给SNI。

托管服务器上存有目标服务器的证书私钥吗?

对于理论扎实的读者,即使没有部署过托管服务,也可以凭逻辑推理就可以知道,而完全不需要求助于别人。

密钥分发阶段,如果使用到RSA公钥加密“Pre-Master Secret”,托管服务器需要使用私钥才能解密并获得明文的“Pre-Master Secret”,必须拥有明文的私钥。握手连接时,凡是需要私钥签名的部分,同样需要私钥。

为了便利地完成这些任务,托管服务器通常都拥有目标服务器的私钥。

托管服务器是怎样的存在?

逆向代理,即代理目标服务器与客户端通信,这个逆向代理,代理的是HTTPS安全通信。

代理服务器与目标服务器之间的通信,同样也使用HTTPS来完成,此时代理服务器就是客户端,而目标服务器是服务器。

有读者可能会不解地问,既然代理服务器所有的数据都来源于目标服务器,那它有什么样的存在价值呢?

代理服务器与目标服务器之间的通信

代理服务器会将一切可以缓存的静态页面,缓存在本地,只要这些静态内容没有过期,可以直接返回客户端,这样就可以大大减少用户的等待时间,同时减少对目标服务器的重复性内容的骚扰。

本文链接:https://www.idcbest.com/cloundnews/11003423.html



天下数据手机站 关于天下数据 联系我们 诚聘英才 付款方式 帮助中心 网站备案 解决方案 域名注册 网站地图

天下数据18年专注海外香港服务器、美国服务器、海外云主机、海外vps主机租用托管以及服务器解决方案-做天下最好的IDC服务商

《中华人民共和国增值电信业务经营许可证》 ISP证:粤ICP备07026347号

朗信天下发展有限公司(控股)深圳市朗玥科技有限公司(运营)联合版权

深圳总部:中国.深圳市南山区深圳国际创新谷6栋B座10层 香港总部:香港上環蘇杭街49-51號建安商業大廈7樓

7×24小时服务热线:4006388808香港服务电话:+852 67031102

本网站的域名注册业务代理北京新网数码信息技术有限公司的产品

工商网监图标