Nov 24, 2011

http 协议以及基于GAE的代理安全性

基于 GAE 的代理为什么要伪造SSL证书?因为说到底GAE原本就不是代理服务器。GAE提供服务的模式是,客户访问 http/https://app-id.appspot.com/some-url,返回媒体文件(HTML, CSS,图片等)
代理服务器提供服务的模式参见 使用HTTP代理服务器的安全性简评

浏览器的 http 访问,对于代理服务器和 GAE差不多。而 https 访问则不同。

HTTPS 握手机制(很好的HTTP协议简介,包括HTTP和TCP如何配合
注意客户端生成对称密钥,再使用服务器的公钥加密该对称密钥,发送给服务器。
C: client, P: proxy; S server, G GAE, L Local


(a) 当我们通过代理服务器访问https协议的网站时,浏览器会向代理服务器发送CONNECT请求,连接建立后,按 https 机制进行通信
(b) GAE 并不是一个代理服务器,当GAE应用访问 https服务器时,只能执行一次元操作,也就是说 GAE 应用S之间的通信是保密的,但是最终GAE应用获得的是明文。因此使用GAE相当于控制一个远程浏览器,让它进行操作
(c) (b)的问题是C浏览器知道要https访问,它需要获得公钥,产生对称密钥,进行加密通信。所以只能通过Local伪造证书,并颁发给C,此时L和G之间通信是不加密的,所以是不安全的
(d) GAE 可以以 https方式访问,因此可以进行保密通信。

综上,GAE 代理破坏了 https的保密机制,但这是没有办法的办法,因为 GAE 不是真正的代理服务器。在(d)的情况下,分为三段,各自使用https通信。也有一定的安全性。

0 comments: