Https报文中的SNI字段

来自三线的随记

https通讯过程中,

ssl挥手阶段的client hello报文中的server name字段值(ssl.handshake.extensions_server_name)[Server Name Indication, 缩写SNI],

会暴露https通讯中目标站点的domain


tcpdump参考命令

tcpdump -i any -s 1500 '(tcp[((tcp[12:1] & 0xf0) >> 2)+5:1] = 0x01) and (tcp[((tcp[12:1] & 0xf0) >> 2):1] = 0x16)' -nnXSs0 -ttt


SNI加密

基于ESNI解决:ESNI是 TLS 1.3 协议的扩展,他可以加密SNI使HTTPS流量更难以被分析(也就是域名值加密了),基于ESNI还可以达到畅快访问某些学术网站的目的(相关技术加成关键词: DNSSEC),然而目前各大浏览器对ESNI并没有很好的支持(chrome不支持,据说火狐实验支持)

检测浏览器是否支持ESNI等技术的网址: https://www.cloudflare.com/ssl/encrypted-sni/