3

wss://クライアント側で -protocol を使用して、PHP WebSocket ライブラリを SSL にアップグレードしようとしています。しかし、私は、a) サーバーソケットをセットアップする方法、および b) 着信メッセージをデコードする方法を理解しようとして途方に暮れています。前者での私の現在の試みは次のとおりです。

$context = stream_context_create();

// local_cert must be in PEM format
stream_context_set_option($context, 'ssl', 'local_cert', $pemFilePath);
// Pass Phrase (password) of private key
stream_context_set_option($context, 'ssl', 'passphrase', $pemPassPhrase);
stream_context_set_option($context, 'ssl', 'allow_self_signed', true);
stream_context_set_option($context, 'ssl', 'verify_peer', false);

$serverSocket = stream_socket_server('ssl://'.$host.':'.$port, $errNo, $errStr, STREAM_SERVER_BIND|STREAM_SERVER_LISTEN, $context);

ただし、サーバー プロトコルとして SSL を使用すると、クライアントはメッセージを送信していないように見えます。また、tcp を使用すると、奇妙に暗号化されたデータが取得されます。ストリーム コンテキストに。

私は何を間違っていますか?

4

1 に答える 1

4

実装で同じ問題に遭遇し、適切な回避策を見つけました。ファイアウォールで保護された任意のポートに Websocket サーバーを配置し、セキュア ポート ポートからの接続をトンネリングします。次のような構成でstunnelを使用できます。

[websockets]
accept = 8443
connect = 8080

このように、stunnel がすべてのセキュリティを行い、websocket サーバーがすべての websocket を行います。勝つ!

于 2013-05-07T17:33:49.877 に答える