SNI(Server Name Indication)
- SNI是TLS的扩展,用来解决一个服务器可以解析多个域名的情况
- https建立连接时, 需要经过TLS握手,再使用http按照约定好的加密规则进行加密传输。那么问题来了,如果一台服务器对应多个虚拟主机,且每个主机的都有 不同域名,使用了不一样的证书,该和哪台虚拟主机通信呢?
- HTTP协议通过请求头中添加host解决,TLS的做法也是加Host,在TLS握手第一阶段的ClientHello的报文里可以获取到
- 举例
例如sisu.xboxlive.com这个域名,用wireshak抓包,过滤出ssl.handshake的通信报文,可以在clienthello报文内看到域名