Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与子进程共享SSL套接字_Ssl_Openssl - Fatal编程技术网

与子进程共享SSL套接字

与子进程共享SSL套接字,ssl,openssl,Ssl,Openssl,我在一个需要支持wss的服务器上工作://。服务器需要处理websocket头以识别请求,然后可能决定将SSL上下文传递给工作进程。目前,服务器使用OpenSSL进行SSL通信,但据我所知,使用OpenSSL无法在进程之间共享安全套接字(在父进程中尝试使用SSL_会话,在子进程中尝试使用d2i_SSL_会话/SSL_CTX_添加_会话)-参考: 我正在寻找其他SSL库,可能允许这一点,目前正在研究NSS 这在任何成熟的开源SSL库中都是可能的吗 这在任何成熟的开源SSL库中都是可能的吗 我认为在

我在一个需要支持wss的服务器上工作://。服务器需要处理websocket头以识别请求,然后可能决定将SSL上下文传递给工作进程。目前,服务器使用OpenSSL进行SSL通信,但据我所知,使用OpenSSL无法在进程之间共享安全套接字(在父进程中尝试使用SSL_会话,在子进程中尝试使用d2i_SSL_会话/SSL_CTX_添加_会话)-参考:

我正在寻找其他SSL库,可能允许这一点,目前正在研究NSS

这在任何成熟的开源SSL库中都是可能的吗

这在任何成熟的开源SSL库中都是可能的吗

我认为在用户空间中实现任何SSL库都是不可能的,因为这样您就需要在多个进程之间持续共享单个SSL连接的状态。与此相反,底层TCP连接的状态是在内核内部管理的,即使父进程和子进程打开了相同的连接,也只有一个状态


我不知道有哪一个SSL库没有在用户空间中实现。

在尝试用libssl实现这一点的几个月后,我决定自己实现TLS。如果不理解和修改libssl(或libressl),我就无法实现此功能。我仍然认为这是可能的,我只是没有找到办法。我从零开始实现了一个TLS库,并将其应用于。现在我有了两个必需的函数tls\u export\u context和tls\u import\u context。

这是个坏消息。我只是希望能够序列化连接上下文并将其传输给子对象(传输时,只有子对象负责),我不这么认为。但是,为什么不在完成父对象中的套接字之后才简单地为子对象分叉呢?在这种情况下,您只需注意关闭套接字,而不必注意父级中的SSL部分(即不关闭SSL)。我不确定我是否理解。我有以下流程:TCPaccept;SSLinit;SSLread;分析_头;如果(需要)执行进程以处理读写(…)。我可以在子进程中重新协商SSL连接吗?谢谢。你不必重新谈判。After fork子级与父级具有相同的状态和套接字。只要不在父级内部对SSL连接执行任何操作,就可以在子级中继续。因此,最好是关闭父进程中的套接字,而父进程不会关闭连接,因为子进程仍然保持连接打开。但是,如果处理多个SSL套接字的子进程(例如:工作进程)已经存在,该怎么办呢。我如何将SSL上下文发送到该进程?进程A接受SSL连接并创建辅助进程B。A接受另一个连接并将其传输给辅助进程B(无需再次分叉)。谢谢你的耐心。