将tls.CleartextStream实例传递给工作进程

时间:2012-10-19 09:55:11

标签: node.js sockets tcp ssl

我想将tls.CleartextStream实例传递给工作进程(由cluster.fork()方法创建)。虽然我可以使用send(message, handle)方法发送net.Socket个实例,但我无法使用ClearStream类执行相同操作。

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

这就是我想要实现的:Node.js应用程序的主进程正在侦听TLS连接。在启动时会产生许多特定的工作进程。连接到主进程的客户端希望重定向到某个工作进程。因此,主服务器应将套接字发送到相应的工作进程。这实际上有效,但是当TLS上下文丢失时,工作进程既不能对数据进行解码也不能对连接的客户端进行编码。

enter image description here

你知道如何实现这个目标吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

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

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

相关问题