我想在SHM中创建一个TLS连接/会话池,这样我就可以在多个进程中使用TLS连接(当然不是在同一时间)。
我确实读过旧的论坛帖子,认为这是不可能的,但接近2017年仍然是这样,或者现在有一种方法可以在SHM中放入SSL处理程序以及TLS会话创建和需要的内容吗?
我在Linux上用C或C ++开发。
编辑:根据意见暂停。你能解释一下这个问题中表达的意见吗?谢谢
答案 0 :(得分:2)
是的,这是可能的。例如Apache manages it just fine。 So does nginx.(请注意,此处共享的内容特别是TLS 会话,而不是连接本身。)
我不熟悉这是如何实现的,但这两个应用程序都是开源的,所以你可以研究它们的源代码来查找。
答案 1 :(得分:1)
确实可以跨进程共享SSL上下文,但SSL-session-context
需要驻留在(工作)进程可访问的共享内存位置。
第一步是注册回调:
SSL_CTX_sess_set_new_cb(ctx, shared_ctx_new_cb);
SSL_CTX_sess_set_get_cb(ctx, shared_ctx_get_cb);
SSL_CTX_sess_set_remove_cb(ctx, shared_ctx_remove_cb);
确保始终在共享内存中创建适当的SSL-session-context
(或至少返回一个序列化且可以使用的可寻址指针SSL_SESSION
。
要(de)序列化SSL_SESSION
C结构,请使用可用的API d2i_SSL_SESSION(...)
和i2d_SSL_SESSION(...)
。
使用此方法的示例代码可在github上找到。
答案 2 :(得分:-1)
不要。 2个理由