只是想知道,如果您在应用程序层使用 SSL/TLS,这是否会使任何试图在我的客户端和路由器之间嗅探的人无法看到我请求查看的网站?
我猜和 VPN 是一样的吧?
我想防止任何在客户端和路由器之间嗅探的人看到我正在向哪些网站发出 http 请求。
答案1
浏览器中的正常 SSL/TLS 会话(即使用 https)通常会从客户端到相关的 Web 服务器建立连接。
因此,虽然由于流量是加密的而无法嗅探,但至少可以看到目标 IP 地址,并从那里推断出相关的网站。
另一方面,如果您指的是使用 SSL 作为到 VPN 服务器的 VPN 传输,并且从该服务器到 Web 服务器建立传出连接,那么嗅探本地流量只会显示您和 VPN 服务器之间的加密流量,因此单个 http 请求将被隐藏。
需要考虑的另一个方面是 DNS 请求的去向。如果您在通过 VPN 向该网站发送 http 请求之前使用未加密的 DNS 服务器路径来解析 www.verysecretsite.com,则嗅探 DNS 将显示您正在访问的位置。
答案2
他们能够看到请求发往哪个 IP 地址。他们无法读取Host
请求中的标头。因此,他们无法将其锁定到精确的您正在查看的网站,仅显示它位于哪个服务器上(或多或少)。
答案3
他们能够看到您请求的 IP 地址(这不一定能解析回您请求的主机名)以及服务器在握手过程中发送的服务器证书。服务器证书在握手过程中清晰可见(这是建立加密通道所需的步骤,发生在加密生效之前)。
服务器证书将包含主机名,因此它将是可见的。在某些情况下,证书可能包含多个主题备用名称 (SAN) 条目(或通配符条目(例如*.example.com
),这意味着它将对多个主机名有效:这对窃听者来说可能有点模棱两可,但这给出了相当有力的线索。
(正如@Paul所说,DNS也可以提供线索。如果您事先知道要访问哪些网站,则可以通过在文件中固定DNS条目来阻止请求hosts
。)
支持服务器名称指示的现代客户端还将server_name
在 TLSClientHello
消息的扩展中显示他们所追踪的主机名。