2012-07-02 86 views
2

我目前正在做一些OpenSSL編程,我需要創建一個OpenSSL BIO並基本上啓動到遠程服務器的SSL連接,然後將該連接傳遞給另一個進程。我目前正在計劃這樣做的方式是將BIO「封裝」到內存緩衝區中並通過套接字發送,因爲我需要取消引用BIO結構中包含的許多指針,因此不能只是「投射」 BIO到char *併發送它。有誰知道是否有更簡單的方法來做到這一點?我看到有內存的BIOS,但做了一些研究之後,它仍然是我不清楚他們是否是我需要什麼或不...在兩個不同的進程之間共享OpenSSL BIO

感謝

+0

爲什麼不在進程之間使用多線程而不是套接字通信? – mathematician1975

+0

這是兩種不同的程序:/發送BIO的程序是服務器,客戶端連接到它以獲取這些SSL BIO,然後使用它進行通信。 – acez

回答

0

這是很容易重新設計解決方案,以便代替將新創建的SSL套接字傳遞給另一個工作進程,而是向該進程打開一個常規套接字對。然後,您的SSL進程將充當在套接字到worker和SSL套接字之間傳遞數據的代理。爲了獲得一些並行性,可以在SSL進程中使用多個線程。

如果您真的想要將SSL套接字轉移到另一個進程,您需要傳輸整個SSL狀態,以便在工作進程中正確初始化加密和解密狀態。這意味着您需要了解SSL上下文的哪些部分需要傳輸,以及傳輸SSL_SESSION。

相關問題