3

我想将一个tls.CleartextStream实例传递给一个工作进程(由cluster.fork()方法创建)。虽然我可以使用send(message, handle)net.Socket方法发送实例,但我不能使用 ClearStream 类来做同样的事情。

是否有办法通过序列化原始 CleartextStream 实例来“重新包装”连接的原始套接字?

这就是我想要实现的:Node.js 应用程序的主进程正在侦听 TLS 连接。有许多特定的工作进程在启动时产生。连接到主进程的客户端希望被重定向到某个工作进程。因此 master 应该将 socket 发送到相应的 worker 进程。这实际上是可行的,但是随着 TLS 上下文丢失,工作进程既不能解密也不能编码数据以与连接的客户端通信。

在此处输入图像描述

您知道如何实现这一点吗?

4

2 回答 2

2

以安全可信的方式传递连接的 TLS 连接是一个难题。

最简单的方法是在 Master 进程上进行 TLS 解码/编码,然后将数据本身发送给各个工作人员。为了保持该网络连接的安全,您可以在主服务器和工作服务器之间创建另一个 TLS 会话。主要的警告是性能瓶颈的可能性

您可以使用 stream.pipe http://nodejs.org/api/stream.html#stream_stream_pipe_destination_options将两个 TLS 流双向连接到另一个。

编辑:只需更仔细地阅读问题。由于工作进程在同一台机器上,因此您不必在主进程和工作进程之间使用 TLS。

于 2012-10-24T02:10:14.113 回答
0

在fork之后,每个worker都是一个独立的处理器,拥有自己的地址空间。跨进程边界传递 fd 或 socket 可能不起作用。

我同意 Eric,最好的办法是使用 stream.pipe()。

于 2012-11-05T17:23:56.420 回答