这实际上是一个模糊的问题。这就是为什么。当您访问 https 服务器时,http(在这里看到 https 只是 http over TLS)是比运行在下面的 TLS 更高的层。完成的第一件事是协商 TLS 设置,如密码套件、密钥、握手等。这是在 https 端口上完成的,但还没有 http 数据。然后客户端或服务器更改为加密模式,所有内容都被加密。
协商完成后,它转向应用程序数据,它只是普通的旧 http 协议作为有效负载。
但此数据已加密,因此不会显示任何 URL。但是,众所周知,服务器和客户端的 IP 地址没有加密,因为它不是在 TLS 层中使用,而是在低于 TLS 的 IP 层中使用,这是较低级别的。TLS 是 IP 数据包的有效负载,其中包含 IP 地址、端口号、IP 协议(如 tcp 等)作为标头。因此,因为只有 TLS 被加密,所以这些项目没有被加密。
此外,只要服务器和/或客户端的证书可以“链接”到根权限或具有有效证书,窃听就不是问题。
最后我想说的是,TLS 和 HTTPS 实际上是一个框架和算法,用于协商最高安全级别,基于客户端和服务器的偏好以及最低支持的框架。基本上,TLS 没有定义实际使用的加密。这些是密码套件,通常在与 TLS 协议不同的 RFC 类型设置中进行监管。因此,仅基于 HTTPS,仅说明其提供的领域的安全质量是不够的。只能假设一些最低限度的安全性和难度。密码套件的实际质量是一个复杂的问题,并且针对每种类型,因为有许多依赖于完全不同的机制。
编辑
还引起我注意的是,TLS 的服务器名称指示器(用于共享 IP 地址的多个服务器)扩展确实很容易告诉任何人访问的服务器的域名。仅在发送到服务器的第一条消息中,字段将包含域名的 ASCII 文本,例如“google.com”。因此,监视第一个数据包的任何人都可以轻松看到此信息。这是当今许多网站主机中常见的选择。但是任何 URL 都不应该是不安全的。
最后,它真的取决于密码套件,它们并不完全相同,就像没有加密的默认密码套件一样。如果您的浏览器和网站配置为支持这些套装,那么任何人都会看到纯 http。因此,取决于您的 Web 浏览器和服务器,从 IP 地址到 IP 地址以及域名(有时也可以通过其他方式解决,这不太容易),以在其他一些情况下,一切都取决于密码套装的强度。