標籤:home 控制 目標 使用者 attr 多個 協議 發送 命令
轉自別人的文章:78385506
- 用戶端通常會用 Web Proxy伺服器代表它們來訪問 Web 服務器。比如,很多公司都會在公司網路和公用網際網路的安全邊界上放置一個代理。代理是防火牆路由器唯一允許進行 HTTP 流量交換的裝置,它可能會進行病毒檢測或其他的內容控制工作。
- 但只要用戶端開始用伺服器的公開金鑰組發往伺服器的資料進行加密,代理就再也不能讀取 HTTP 首部了。代理不能讀取 HTTP 首部,就無法知道應該將請求轉向何處了。
- 為了使 HTTPS 與代理配合工作,要進行幾處修改以告知代理串連到何處。
- 一種常用的技術就是 HTTPS SSL 隧道協議。使用 HTTPS 隧道協議,用戶端首先要告知代理,它想要串連的安全性主機和連接埠。這是在開始加密之前,以明文形式告知的,所以代理可以理解這條資訊。
- HTTP 通過新的名為 CONNECT 的擴充方法來發送明文形式的端點資訊。CONNECT 方法會告訴代理,開啟一條到所期望主機和連接埠號碼的串連。這項工作完成之後,直接在用戶端和伺服器之間以隧道形式傳輸資料。CONNECT 方法就是一條單行的文本命令,它提供了由冒號分隔的安全原始伺服器的主機名稱和連接埠號碼。host:port 後面跟著一個空格和 HTTP 版本字串,再後面是 CRLF。接下來是零個或多個 HTTP 要求首部行,後面跟著一個空行。空行之後,如果建立串連的握手過程成功完成,就可以開始傳輸 SSL 資料了。
CONNECT home.netscape.com:443 HTTP/1.0User-agent: Mozilla/1.1N<raw SSL-encrypted data would follow here...>
- 在請求中的空行之後,用戶端會等待來自代理的響應。代理會對請求進行評估,確保它是有效,而且使用者有權請求這樣一條串連。如果一切正常,代理會建立一條到目標伺服器的串連。如果成功,就向用戶端發送一條 200 Connection Established 響應。
HTTP/1.0 200 Connection established
Proxy-agent: Netscape-Proxy/1.1
HTTP隧道解決的問題