SNI 协议




SNI代表服务器名称指示,是 TLS 协议的扩展。它指示在"握手"过程开始时浏览器正在联系哪个主机

这允许服务器在相同的IP地址和 TCP 端口号上呈现多个证书,并且因此允许多个安全网站从相同的IP地址被传送而不需要所有这些站点使用相同的证书。

当进行 TLS 连接时,客户端会从Web服务器请求数字证书。服务器发送证书后,客户端会检查该证书,并将其尝试连接的名称与证书中包含的名称进行比较。

如果发生匹配,则连接正常进行。如果未找到匹配,则可以警告用户该差异,并且由于不匹配可能指示尝试的中间人攻击,连接可能会中止。

由于IP地址数量有限,要求每个网站都有自己的 IP 地址可能会导致长期问题。服务器名称指示(SNI)是解决这个问题的方法。

支持 SNI 的浏览器会在初始化安全连接期间立即传达访问者想要连接的网站名称,以便服务器知道要发回哪个证书。

一些较旧的浏览器/系统不能支持该技术。这是因为SSL / TLS库可作为请求的一部分并作为操作系统的一部分进行传输。