可以将代理服务器缓存SSL的GET? 如果不是,将响应体的加密就足够了?(Can a proxy

2019-07-19 03:27发布

可以在(||任何)代理服务器缓存内容由客户端通过HTTPS请求? 由于代理服务器无法看到查询字符串,或HTTP头,我估计他们不能。

我正在考虑一个桌面应用程序,由一些落后他们公司代理的人运行。 此应用程序可通过Internet访问服务,我想借此对“读”的内置缓存互联网基础设施的优势。 如果高速缓存代理服务器不能缓存SSL传输的内容,只会加密响应的内容是一个可行的选择吗?

我正在考虑所有的GET,我们希望成为可缓存请求通过HTTP使用非对称加密方法加密的身体,每个客户端解密密钥请求。 任何时候我们希望执行一个GET是不能被缓存,或POST操作,它会通过SSL进行。

Answer 1:

由罗里的注释,代理将不得不如果不stricltly真正使用自签名的证书。

代理可以实现以生成新的证书为每个新的SSL主机就被要求处理,并与公共根证书签名。 在corportate环境的OP的情况下共同签署证书可以相当容易地安装作为客户机上的受信任的CA,他们会很乐意接受这些“伪造” SSL证书为交通被代理一样会有任何主机名不匹配。

事实上,这也正是软件,如如何查尔斯Web调试代理允许SSL流量的检查而没有浏览器的安全性造成的错误,等等。



Answer 2:

不,这不可能直接缓存HTTPS。 在客户端和服务器之间的整个通信进行加密。 代理坐在服务器和客户端之间,以缓存它,你需要能够读取它,即解密加密。

你可以做一些事来缓存它。 基本上你做你的代理的SSL,拦截发送到客户端的SSL。 基本上,数据在客户端和代理之间的加密,它是解密,阅读和高速存储,数据加密和服务器上发送。 从服务器的应答同样descrypted,阅读和加密。 我不知道你是如何做到这一点的主要代理软件(如鱿鱼),但它是可能的。

用这种方法唯一的问题是,代理将不得不使用自签名的证书,以对其加密到客户端。 客户将能够告诉大家,在中间的代理已经读取数据,因为该证书将不会从原址。



Answer 3:

我想你应该只使用SSL,而且依赖于HTTP客户端库,做高速缓存(例如:WinInet的在Windows上)。 很难想象,企业级高速缓存的典型应用该类超支是值得书写的代理自定义的安全加密方案或证书乐趣的痛苦。 更糟的是,关于你提到的encyrption方案,对实体主体做asynmetric密码听起来像一个巨大的打击PERF您的应用程序的服务器端; 还有的是,SSL使用对称密码进行连接的实际有效载荷的一个原因。

有关该应用程序是不是浏览器的应用程序,这是一个桌面应用程序在互联网上拉取数据。 什么将要发生的是,应用程序的所有实例将拉动同一块大约大约在同一时间。 这个数据需要被保护,但我希望通过让应用程序的某些情况下,得到了企业的代理服务器缓存版本增加PERF。

该数据块虽小,但他们可能会经常要求。 基本上所有的应用程序实例打算同时请求相同的数据彼此。

在服务器端中的数据/消息体将预先加密,并在一个分布式内存哈希表缓存。 加密不会在每个请求的基础上执行。

我还在研究利用消息总线,如NServiceBus代替。



Answer 4:

退房www.bluecoat.com是一个商业代理,其实可以这样做HTTPS拦截,以阻止网站,限制的内容,检查是否有病毒和缓存中的内容(取)



Answer 5:

我想你应该只使用SSL,而且依赖于HTTP客户端库,做高速缓存(例如:WinInet的在Windows上)。 很难想象,企业级缓存的好处是值得书写的代理自定义的安全加密方案或证书乐趣的痛苦。 更糟的是,关于你提到的加密方案,对实体主体做非对称密码听起来像一个巨大的打击PERF您的应用程序的服务器端; 还有的是,SSL使用对称密码进行连接的实际有效载荷的一个原因。



Answer 6:

怎么样加密HTTPS响应部件后面的应用程序服务器上设置一个服务器缓存? 如果你有一个反向代理设置此功能非常有用。

我想到的是这样的:

application server <---> Squid or Varnish (cache) <---> Apache (performs SSL encryption)


文章来源: Can a proxy server cache SSL GETs? If not, would response body encryption suffice?