与 child 个进程共享 SSL 套接字

Share SSL socket with child process

我在需要支持 wss:// 的服务器上工作。服务器需要处理 websocket header,以识别请求,然后可能决定将 SSL 上下文传递给工作进程。目前,服务器使用 OpenSSL 进行 SSL 通信,但据我了解,使用 OpenSSL 无法在进程之间共享安全套接字(尝试在 parent 进程中使用 SSL_SESSION 并在 [=] 中使用 d2i_SSL_SESSION/SSL_CTX_add_session 20=] 过程) - 参考: http://openssl.6102.n7.nabble.com/How-to-share-SSL-sessions-between-parent-and-child-process-when-doing-fork-exec-td11077.html.

我正在寻找可能允许这样做的其他 SSL 库,目前正在寻找 NSS。

任何成熟的开源 SSL 库都可以做到这一点吗?

Is this possible with any mature open source SSL library?

我认为在 user-space 中实现的任何 SSL 库都不可能,因为那样的话您将不断需要在多个进程之间共享单个 SSL 连接的状态。与此相反,底层 TCP 连接的状态在内核内部管理,即使父进程和子进程打开相同的连接,也只有一个状态。

而且我不知道有哪个 SSL 库没有在 user-space 中实现。

在尝试使用 libssl 寻找实现此目标的方法几个月后,我决定制作自己的 TLS 实现。如果不理解和修改 libssl(或 libressl),我找不到实现此功能的方法。我仍然认为是可能的,我只是没有找到办法。我从头开始实现了一个 TLS 库并将其放在 github 上。现在我有了两个需要的函数 tls_export_context 和 tls_import_context.