SSL Proxy

appleleaf's picture

以前写过一篇SSL Proxy的小的分析,在最近一次讨论中发现我还是了解的不够细致,这里描述的细致一些。

首先是定义一下应用场景:

SSL Client<--------------------------->SSL Server

首先是标准的SSL Client和Server进行通信。

SSL Client<-------------->MITM<------------->SSL Server

需求是:在其间加入中间人,劫持会话,生成两个SSL会话,从而可以获取明文数据,同时符合SSL标准,同时不用Client明确关注到中间人。

业界有两种实现:

1.SSL Forward Prxoy -- 正向代理

即代理Client。中间人生成自签名证书,Client要明确相信中间人的证书,这样中间人就不必将Server的证书发送给Client。

2.SSL Reverse Proxy -- 反向代理

即代理Server,要求Server的证书必须明确的配置在中间人上,这样中间人可以完全承担Server的加解密的功能。

从技术角度讲,潜在的还可以将Client的证书配置到中间人上,但是这是无法操作的。

即使是业界的实现也有一些局限:

1.两种实现所共有的局限是:Server不能对于Client进行身份验证,因为Client的私钥无法获取。

2.正向代理的另一个局限是,由于中间人是自签名证书,如果Client实现一定要验证Server证书合法性,则无法实现会话的劫持。

0
Your rating: None

Comments

Since TLS, in particular,

Since TLS, in particular, requires end-to-end connectivity to provide
   authentication and prevent man-in-the-middle attacks, this memo
   specifies the CONNECT method to establish a tunnel across proxies.