2014-10-07 75 views
2

我是Websockets的新手,我有以下設置(下面)。我試圖確定的是,從Apache發回到瀏覽器的通信是否真正安全。當連接到未加密的後端時,mod_proxy_wstunnel是否會加密數據?

我開始通過wss://(端口443)從瀏覽器到Apache的WebSocket連接。通過mod_proxy_wstunnel,我通過端口8080上的非安全ws://連接來連接到Ratchet。

當Ratchet通過非安全端口8080發回數據幀時,mod_proxy_wstunnel會加密數據,以便Apache發送它回到瀏覽器加密?

|---------| 443 |--------------|  |--------------------| 8080 |---------| 
| Browser | <---> | Apache httpd | <-> | mod_proxy_wstunnel | <----> | Ratchet | 
|---------|  |--------------|  |--------------------|  |---------| 

我知道初始連接是通過端口443上的HTTPS完成的,並通過WebSocket握手來切換協議。但根據協議切換後的https://www.websocket.org/aboutwebsocket.html,「HTTP連接中斷,並通過相同的底層TCP/IP連接上的WebSocket連接替代。WebSocket連接使用與HTTP(80)和HTTPS(443)相同的端口,默認。」

僅僅因爲它在同一端口上進行通信,並不一定意味着它仍然是真正加密的,特別是當HTTP連接「中斷」時。在這種情況下,在我看來,mod_proxy_wstunnel只是簡單地轉發來自Ratchet的數據,因此數據在端口443上被傳遞爲未加密,給人一種錯誤的安全感。

回答

0

我有完全相同的設置,除了我在後端代替棘輪使用交叉開關IO。

我使用Wireshark來調查安全和不安全連接的數據包。我可以輕鬆讀取不安全連接的數據(如您所期望的)。當我轉向安全時,Wireshark甚至沒有意識到使用了websocket協議,我看不到任何類似於我的數據的東西。

從這我得出結論,mod_proxy_wstunnel加密它發回給瀏覽器的數據,如你所願。