2015-01-08 172 views
0

我試圖加密從client1到client2的消息,但它不能通過點對點完成;因爲動態的IP問題。處理SSL客戶端到服務器到客戶端的最佳方式(relay?)

我已決定使用中央服務器,但我不確定服務器是否應該中繼SSL握手以及之後的任何後續加密消息(從client1到client2)。我想的另一種選擇是讓服務器將client2的IP提供給client1,並讓client1發起直接連接,並直接執行SSL握手。

或者也許有更好的方法來做到這一點?

這裏是2流,我畫了起來:

enter image description here

OR

enter image description here

回答

1

使用兩個客戶端之間的直接連接,並使用服務器,旨在便利IP的發現,是儘可能最好的選擇。 Client1可以嘗試連接到Client2,如果失敗,則客戶端可以切換角色並讓Client2嘗試連接到Client1。

如果無法在任一方向進行直接連接(例如,兩個客戶端都在阻止連接的路由器/防火牆後面,並且常用的NAT打孔技術無法打開它們),則服務器可以充當中繼器,類似於配置爲使用代理服務器時瀏覽器仍然可以連接到HTTPS服務器的方式。只要服務器原樣依賴SSL消息,並且客戶端不驗證TCP數據包的源IP地址,則它將起作用。但是,如果客戶端驗證源地址,則每個客戶端必須在其自身和服務器之間建立單獨的SSL會話,其中Client1將加密數據發送到服務器,該服務器解密數據並在數據重新加密時發送給客戶端2,反之亦然。

相關問題