在两个不同的进程之间共享OpenSSL BIO

时间:2012-07-02 18:19:52

标签: c sockets openssl

我目前正在做一些OpenSSL编程,我需要创建一个OpenSSL BIO,基本上启动到远程服务器的SSL连接,然后将该连接传递给另一个进程。我目前计划这样做的方法是将BIO“打包”到内存缓冲区并通过套接字发送,因为我需要取消引用BIO结构中包含的一些指针,因此不能只是“强制转换” BIO转到char *并发送给它。有谁知道是否有更简单的方法吗?我看到有记忆BIO,但经过一些研究后,我仍然不清楚它们是否是我需要的......

由于

1 个答案:

答案 0 :(得分:0)

重新设计解决方案要容易得多,以便不是将新创建的SSL套接字传递给另一个工作进程,而是为该进程打开常规套接字对。然后,您的SSL进程充当代理,将套接字之间的数据传递给worker和SSL套接字。要获得某种并行性,可以在SSL进程中使用多个线程。

如果您真的希望沿着将SSL套接字转移到另一个进程的路径,则需要传输整个SSL状态,以便在工作进程中正确初始化加密和解密状态。这意味着您需要了解需要传输SSL上下文的哪些部分,以及传输SSL_SESSION。