我刚刚在大学里选修了两门关于计算机安全和互联网编程的课程。前几天我在想这件事:
Web 缓存代理服务器缓存来自 Web 服务器上的热门内容。例如,如果您的公司内部网络连接速度为 1 Gbps(包括 Web 缓存代理服务器),但互联网连接速度只有 100 Mbps,那么此功能非常有用。Web 缓存代理服务器可以更快地将缓存内容提供给本地网络上的其他计算机。
现在考虑 TLS 加密连接。加密内容能以任何有用的方式缓存吗?letsencrypt.org 发起了一项伟大的计划,旨在使所有互联网流量默认通过 SSL 加密。他们通过让为您的网站获取 SSL 证书变得非常容易、自动化和免费(从 2015 年夏季开始)来实现这一目标。考虑到 SSL 证书的当前年度成本,免费确实很有吸引力。
我的问题是:HTTPS 流量最终会让 Web 缓存代理服务器过时吗?如果是这样,这会对全球互联网流量负载造成什么影响?
答案1
是的,HTTP 会抑制网络缓存。
具体来说,因为缓存 HTTP 需要进行中间人攻击 - 将 SSL 证书替换为缓存服务器的证书。该证书必须即时生成并由本地机构签名。
在公司环境中,您可以让所有 PC 都信任您的缓存服务器证书。但其他机器会给出证书错误 - 这是理所当然的。恶意缓存可以轻松修改页面。
我怀疑视频流等占用大量带宽的网站仍会专门通过常规 HTTP 发送内容,以便缓存。但对于许多网站来说,更好的安全性比增加带宽更重要。
答案2
即使是艰难的 HTTPS 流量也不能严格意义上进行代理(因为,否则,代理软件将充当“中间人“,这正是 SSL 被开发的原因之一,避免), 值得注意的是,常见的软件代理(如 SQUID)可以正确地处理 HTTPS 连接。
这是可能的,因为HTTP 连接方法, 那SQUID正确实现换句话说,对于代理收到的任何 HTTPS 请求,它只是“中继”它,而不会对封装的加密流量进行任何干预。
尽管这乍一听似乎没用,但它允许将本地客户端/浏览器配置为指向代理,同时切断任何形式的互联网连接。
那么,回到你最初的问题:“HTTPS 流量最终会让 Web 缓存代理服务器过时吗?”,我的答案是:
- 是的:如果您仅在缓存方面依赖 Web 代理;
- 不:如果您依赖 Web 代理来执行除缓存之外的其他操作(例如:用户身份验证、URL 记录等)。
PS:HTTPS 的一个类似/主要问题与基于名称的虚拟主机多宿主有关,这在网络托管解决方案中很常见,但......在处理 HTTPS 网站时变得复杂(我没有详细讨论,因为它与这个问题没有严格关系)。
答案3
https 破坏了之前在代理中实现的某些安全性。考虑到 squid 可以拦截页面并用本地内容替换页面(我经常使用此功能)。我过去常常从 Google 搜索中捕获链接,并让我的代理直接重定向到该链接,这样就提高了我的安全性,因为我不会泄露我(或我本地网络上选择使用代理的其他人)访问 Google 的链接。通过使用 https,Google 破坏了我的安全性(当然,这是中间人攻击)。现在我必须破解浏览器代码,这需要付出更多努力……而且家里的其他用户也无法使用,除非他们也愿意运行本地破解的浏览器。