有什么方法可以在代理服务器中缓存HTTPS请求?


12

我们在我们的环境中使用Squid代理服务器,我们想缓存HTTPS请求。

有什么方法可以配置Squid或代理服务器来缓存HTTPS请求?


这可能属于security.se
Tom O'Connor

1
只是要清楚一点,您是在一堆自己的服务器前使用鱿鱼,还是在工作站和Internet之间使用它?
Zoredache

只是为了澄清。您要缓存请求或响应?
Gqqnbig

Answers:


12

有一种方法可以做到,但是从根本上说,这与使用HTTPS的原因背道而驰。

这是您的操作方式。

  1. 为您要拦截并缓存其请求的网站生成一个自签名SSL证书。
  2. 在代理服务器上安装并运行stunnel,告诉它应该提供的证书是在阶段1中生成的证书。
  3. 已将解密的请求转发到squid。
  4. 您可能需要在另一侧使用stunnel,或使用openssl_client将请求重新加密到上游服务器。

注意事项:

  1. 您的用户会恨您。对该站点的每个SSL请求都将显示一个无效的证书窗口。
  2. 您将自己暴露于做淘气事情的潜在诉讼中。(IANAL)
  3. 为此,您将只能获得自签名证书,因为SSL证书的PKI信任网应该如何工作。对受损的根CA没有说什么。

我不会为您提供有关执行此操作的确切详细信息,因为a)我认为这样做有些不道德,并且b)更好地学习如何执行此操作。

我建议您研究通道攻击和中间人攻击的工作方式。


你可以问Trustwave zdnet.com/...卖给你一个根证书,这样你就可以实现这个解决方案,而感到不便的用户:P
罗里

2
实际上,如果您在域中,则生成自己的CA并使用组策略为其部署公共证书要容易得多。
Tom O'Connor 2013年

1
信任SSC + MITM对于协议调试,缓存,深度数据包检查和检查/记录很有用。:/除此之外,还不是很好。

6

只是为了解释为什么没有MITM不能做到这一点-代理仅在使用加密的HTTPS时看到您要连接的服务器的DNS名称。它看不到URL,也看不到任何响应头。它无法确定您正在站点上访问的单个资源,是否可缓存以及修改时间是多少。它所看到的只是有人想要使用HTTPS从远程服务器上获得一些东西。

这意味着缓存无法工作,因为代理不知道要为您提供哪些缓存的对象,或者如何首先获取它们。


5

不,没有:它们是经过加密的...解决方法将类似于中间人部署,但这将克服https背后的所有原因。


1
是否没有解决方法来实现此目的或强制代理服务器解密和缓存?
Supratik

一种变通办法将在某种程度上重新man-in-middle部署,但是这将使https
yrk

5
我不同意这将击败https背后的所有原因。如果您在家中执行此操作并拥有代理,则您的数据仍将在代理和网站之间使用https。
brunoqc

@brunoqc是VPN的工作。
约克(Yrk)'16

1
如果出于某些原因缓存https负载或调试https会话很重要,则MITM非常有用。实际上,这就是Charles的工作方式。

1

宙斯(Now Riverbed)的ZTM Traffic Manager可以执行此操作,因为它可以双向转换HTTP和https流量并缓存未加密的内容-它可以工作,我们使用它,但它的价格令人担忧-如每台服务器的保时捷价格。


5
但这仍然需要您在客户端上安装新的根证书,不是吗?而且您仍然必须信任代理,不是吗?
phihag 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.