3

tls.CleartextStreamインスタンスをワーカー プロセス ( cluster.fork()メソッドで作成)に渡したい。send(message, handle)net.Socketメソッドを使用してインスタンスを送信できますが、ClearStream クラスを使用して同じことを行うことはできません。

元の CleartextStream インスタンスをシリアル化することで、接続された raw ソケットを「再ラップ」する方法はありますか?

これが私が達成したいことです: Node.js アプリケーションのマスター プロセスは TLS 接続をリッスンしています。起動時に生成される特定のワーカー プロセスがいくつかあります。マスター プロセスに接続されているクライアントは、特定のワーカー プロセスにリダイレクトされる必要があります。したがって、マスターは対応するワーカー プロセスにソケットを送信する必要があります。これは実際には機能しますが、TLS コンテキストが失われると、ワーカー プロセスは、接続されたクライアントと通信するためにデータを復号化することも、エンコードすることもできなくなります。

ここに画像の説明を入力

これをどのように実現できるか考えていますか?

4

2 に答える 2

2

接続された TLS 接続を安全で信頼できる方法で渡すことは、難しい問題です。

最も簡単な方法は、マスター プロセスで TLS のデコード/エンコードを行い、データ自体を個々のワーカーに送信することです。そのネットワーク接続のセキュリティを維持するために、マスターとワーカーの間に別の TLS セッションを作成できます。主な注意点は、パフォーマンスのボトルネックの可能性です

stream.pipe http://nodejs.org/api/stream.html#stream_stream_pipe_destination_optionsを使用して、2 つの TLS ストリームを相互に双方向に接続できます。

編集:質問をもっとよく読んでください。ワーカー プロセスは同じマシン上にあるため、マスターとワーカーの間で TLS を使用する必要はありません。

于 2012-10-24T02:10:14.113 に答える
0

フォーク後、各ワーカーは独自のアドレス空間を持つ個別のプロセッサになります。プロセス境界を越えて fd または socket を渡すと、うまくいかない場合があります。

エリックに同意します。最善の方法は、stream.pipe() を使用することです。

于 2012-11-05T17:23:56.420 に答える