2012-04-30 54 views
0

假設您想要對某個網站執行https請求,但您的中間是代理服務器。使用代理的https請求

上述代理並未查看請求,而是在用戶代理使用HTTP CONNECT方法(如http://www.web-cache.com/Writings/Internet-Drafts/draft-luotonen-web-proxy-tunneling-01.txt)後將所有流量中繼到實際的HTTPS服務器。

現在我的問題如下:在代理打開到目標網絡服務器的SSL連接之後,它是否也應該將處理與客戶端的連接的套接字升級到SSL?如果是這樣,它將如何將數據包轉發到服務器而不嗅探實際內容?

我的意思是,如果代理實際上從SSL客戶端套接字讀取數據並將它們轉發到SSL服務器套接字,則數據將不會被加密。

回答

3

該代理具有一個明文連接對客戶端開放,通過它接收CONNECT命令。它打開一個明文連接到服務器。此後它只是在兩個方向上覆制字節。來自客戶端和服務器的字節都是SSL,所以這在沒有代理知道密文內部的情況下工作。

+1

只是一個小提示:我會說明白不是「明文」,而是「不透明的數據」,因爲明文假定可讀性。 –

+0

@ EugeneMayevski'EldoSCorp我不同意。從OP的角度來看,有兩種TCP連接:純文本(無SSL)和密文(SSL)。 – EJP

+1

這是從主觀角度:)。實際上,CONNECT請求本身之後的所有內容都被視爲不透明數據(RFC 2817,第8.2節)。 –