SNI 是否始终用于 TLS 连接?

信息安全 tls 证书
2021-08-27 16:16:28

我知道即使使用DoTDoH连接的目标也会由于在客户端 hello 中使用SNI而泄漏(并且ESNI/ECH是建议的解决方案),但我不知道 SNI 是否被使用 100 % 的时间(假设是 TLS 连接)?

如果不是 100% 的时间,那么什么时候使用或不使用它?

通过“使用”我的意思是它总是存在于client hello使 TLS 连接总是泄漏他们的目标

2个回答

可能有一种方法可以在您的浏览器设置中禁用 SNI。这将阻止您的浏览器client hello在您通过 https 连接到站点时发送 SNI 信息。

但是,这也意味着:

  1. 如果服务器在同一个 IP 上托管多个 TLS 站点,您的浏览器将无法连接到这些站点中的任何一个(这正是我们拥有 SNI 的原因 - 这样服务器就可以在同一个 IP 上托管多个 TLS 站点)。

  2. 如果服务器在 IP 上仅托管一个 TLS 站点,那么您的浏览器将能够通过 https 连接到它。但是,任何窃听者都会知道您正在连接到该站点,因为它是该 IP 上的唯一站点。

因此,在您的浏览器中禁用 SNI(如果可能的话)可能会阻止您连接到很多站点,并且仍然会泄露您仍然能够连接到的站点。

是否使用 SNI 扩展取决于 TLS 客户端。有些会默认使用它(例如所有主要浏览器?),有些根本不会使用它(例如 Windows XP 上的所有 IE 版本),而其他一些客户端将根据参数/配置使用或不使用它(参见例如 openssl s_client 带有选项 -servername 和 -noservername)。