(|| any)代理服务器可以缓存客户端通过https请求的内容吗?由于代理服务器无法看到查询字符串或http标头,我估计它们不能.
我正在考虑一个桌面应用程序,由他们公司代理后面的许多人运行.这个应用程序可以通过互联网访问服务,我想利用内置的互联网缓存基础设施进行"读取".如果缓存代理服务器无法缓存SSL传递的内容,那么只是加密响应内容才是可行的选择吗?
我正在考虑我们希望通过http请求所有GET请求,并使用非对称加密对身体进行加密,其中每个客户端都有解密密钥.任何时候我们希望执行不可缓存的GET或POST操作,它都将通过SSL执行.
Rory的评论认为代理必须使用自签名证书,如果不是非常严格的话.
可以实现代理以为要求处理的每个新SSL主机生成新证书,并使用公共根证书对其进行签名.在OP的corportate环境中,通用签名证书可以很容易地作为客户端计算机上的可信CA安装,并且他们很乐意接受这些"伪造"的SSL证书,因为没有主机名不匹配的代理流量.
实际上,这正是Charles Web Debugging Proxy等软件允许检查SSL流量而不会在浏览器中引起安全性错误的原因.
不,不可能直接缓存https.客户端和服务器之间的整个通信都是加密的.代理位于服务器和客户端之间,为了对其进行缓存,您需要能够读取它,即解密加密.
你可以做一些事情来缓存它.您基本上在代理上执行SSL,拦截发送给客户端的SSL.基本上,数据在客户端和代理之间进行加密,它被解密,读取和缓存,数据被加密并在服务器上发送.来自服务器的回复同样被解密,读取和加密.我不确定你是如何在主要的代理软件(如鱿鱼)上做到这一点,但它是可能的.
这种方法的唯一问题是代理必须使用自签名证书将其加密到客户端.客户端将能够告诉中间的代理已读取数据,因为证书不会来自原始站点.