4

(安全な)WebsocketがHTTP(S)プロトコルと同じポートを使用していることを読みました。ただし、私の PHP Websocket サーバーはクライアントから暗号化されたハンドシェイクを受け取ります。12345 ポートで開いている接続をリッスンしています。

私のシステムは安全でない Websocket を介しても問題なく動作しますが、安全な機能を追加する必要があり、これらの暗号化されたハンドシェイクを受信する理由がわかりません。OSIモデルのおかげで、私には透過的です...

SSLエンジンをアクティブにし、12345ポートでリッスンするようにApacheを構成するとします。このポートは「すでに使用されている」状態になるため、PHP Websocketサーバーに再度使用することはできません...または何かを忘れてしまいました...

道に迷いました :(

編集:

これが私の安全なWebSocketヘッダーです(を使用wss://):

Request URL:wss://localhost:12345/

そして、ここで私の単純な websocket ヘッダー (を使用ws://):

Request URL:ws://localhost:12345/ Request Method:GET Status Code:101 Switching Protocols Request Headersview source Connection:Upgrade Host:localhost:12345 Origin:http://localhost Sec-WebSocket-Extensions:x-webkit-deflate-frame Sec-WebSocket-Key:wovBDvKiKdy/+0Y2BQPr9w== Sec-WebSocket-Version:13 Upgrade:websocket (Key3):00:00:00:00:00:00:00:00 Response Headersview source Connection:Upgrade Sec-WebSocket-Accept:1ao7ngQG4LAa3JxFibyvoocbSAM= Upgrade:websocket (Challenge Response):00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

セキュリティで保護された接続なしでより多くのデータを取得できるのはなぜですか?

4

1 に答える 1

2

(安全な)WebsocketがHTTP(S)プロトコルと同じポートを使用していることを読みました

デフォルトでは、はい - ただし、URL を介して両方のポートをオーバーライドできます。次の点を考慮してください。

http://www.example.com:443/
https://www.example.com:8080/
http://www.example.com:12345/

他の何かが特定のポート/アドレスで既にリッスンしている場合、そこで 2 番目のサーバーを実行することはできません。したがって、Web サーバーが既にポート 443 (https) でリッスンしている場合、別の Websocket サーバーをそのポートで実行することはできません。同じポート。

HTTPS サーバーを 443 のままにして、ssl ws サーバーを 12345 で実行するだけです。


ちょうどあなたの最後のコメントを見ました。

SSL は、リッスンするポートだけではありません。トラフィックは暗号化されます。wss トラフィックを処理する場合は、SSL 対応のサーバーが必要です。これを実装するにはさまざまな方法がありますが、現在のサーバーをどのように実装したかによって異なります。

于 2012-07-13T08:54:18.913 に答える