2017-01-14 38 views
0

我試圖圍繞ssl隧道過程,這是由一個HTTP代理從客戶端接收CONNECT方法後執行的。HTTP代理SSL隧道繼電器詳細信息

東西,我似乎無法找到或文檔,博客,RFC的理解:

1)建立隧道時,從客戶端代理和代理目的地兩個獨立的連接,或者僅僅是兩個連接一個也是一樣的?例如。客戶端代理和另一個代理目標之間是否存在tcp握手?

2)什麼時候開始ssl握手客戶端定位哪個節點(ip地址/主機名)?代理或目標主機?由於ssl需要點對點連接才能進行身份驗證,因此我的感覺告訴我它應該是目標主機。但是再次說明這是沒有意義的,因爲目標主機不能(直接)從客戶端角度訪問(因此是代理)。

回答

1

設置隧道時,是從客戶端代理和代理目的地的兩個連接兩個單獨的連接或只是一個和相同?例如。客戶端代理和另一個代理目標之間是否存在tcp握手?

由於客戶端與代理進行TCP連接,除了代理正在與服務器建立另一個TCP連接以外,沒有別的辦法。沒有辦法將現有的TCP連接更改爲連接到不同的IP:端口。

什麼時候開始ssl握手什麼節點被客戶端定位(ip地址/主機名)?代理或目標主機?

SSL握手由目標主機完成,而不是代理。

由於SSL需要一個點,以點連線,以驗證

它並不需要一個點,以點連接。它只是需要所有數據在客戶端和服務器之間進行未經修改的交換,而代理只是簡單地轉發數據。

+0

我真的不明白客戶端如何執行與目標主機的ssl握手,因爲該節點應該是從客戶端角度不可路由的。代理是否執行路由器的功能?我似乎沒有得到這個:/ – Marc

+0

@Marc:引用自己:*當代理簡單地轉發數據*。是的,代理轉發數據但不是,它不起路由器的作用。當代理在會話層轉發數據包內容時,路由器在網絡層轉發數據包,請參見[OSI模型](https://en.wikipedia.org/wiki/OSI_model)。但是對於TLS握手,只有數據包內容是相關的。 –

+0

好吧,我想我現在明白了。因此,當開始ssl握手時,客戶端將clienthello消息放在client-proxy之間已經打開的tcp cxn上。一旦它到達代理服務器,它就會在已經打開的代理目標之間的tcp罐中繼它。正確? – Marc