当前位置:  开发笔记 > 后端 > 正文

代理服务器可以缓存SSL GET吗?如果没有,响应体加密就足够了吗?

如何解决《代理服务器可以缓存SSLGET吗?如果没有,响应体加密就足够了吗?》经验,为你挑选了2个好方法。

(|| any)代理服务器可以缓存客户端通过https请求的内容吗?由于代理服务器无法看到查询字符串或http标头,我估计它们不能.

我正在考虑一个桌面应用程序,由他们公司代理后面的许多人运行.这个应用程序可以通过互联网访问服务,我想利用内置的互联网缓存基础设施进行"读取".如果缓存代理服务器无法缓存SSL传递的内容,那么只是加密响应内容才是可行的选择吗?

我正在考虑我们希望通过http请求所有GET请求,并使用非对称加密对身体进行加密,其中每个客户端都有解密密钥.任何时候我们希望执行不可缓存的GET或POST操作,它都将通过SSL执行.



1> imaginaryboy..:

Rory的评论认为代理必须使用自签名证书,如果不是非常严格的话.

可以实现代理以为要求处理的每个新SSL主机生成新证书,并使用公共根证书对其进行签名.在OP的corportate环境中,通用签名证书可以很容易地作为客户端计算机上的可信CA安装,并且他们很乐意接受这些"伪造"的SSL证书,因为没有主机名不匹配的代理流量.

实际上,这正是Charles Web Debugging Proxy等软件允许检查SSL流量而不会在浏览器中引起安全性错误的原因.



2> 小智..:

不,不可能直接缓存https.客户端和服务器之间的整个通信都是加密的.代理位于服务器和客户端之间,为了对其进行缓存,您需要能够读取它,即解密加密.

你可以做一些事情来缓存它.您基本上在代理上执行SSL,拦截发送给客户端的SSL.基本上,数据在客户端和代理之间进行加密,它被解密,读取和缓存,数据被加密并在服务器上发送.来自服务器的回复同样被解密,读取和加密.我不确定你是如何在主要的代理软件(如鱿鱼)上做到这一点,但它是可能的.

这种方法的唯一问题是代理必须使用自签名证书将其加密到客户端.客户端将能够告诉中间的代理已读取数据,因为证书不会来自原始站点.


TLS加密隧道阻止您查看HTTP标头,这意味着您无法区分各个响应.所以基本上甚至不能缓存字节完美的数据包
推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有