2016-11-30 20 views
1

我有一個C++應用程序,使用OpenSSL爲不同端點創建多個http客戶端。在設置ssl上下文期間,我將一個Mozilla pem文件加載到一個X509STORE對象中。我可以在不同的ssl上下文之間重用openssl x509store嗎?

X509_STORE* thestore = globalstuffs::getInstance().x509store; 
SSL_CTX_set_cert_store(sslctx_->native_handle(), thestore); 

我的想法是這樣做的,而不是裝載從文件,以節省時間,每次去到磁盤sslctx_->load_verify_file(file);sslctx_->set_default_verify_paths();

有一個單一的客戶端沒有問題,但是當我有一個以上的,在第二次拆卸ssl上下文期間,我在CRYPTO_free中遇到了錯誤。調用堆棧顯示X509_STORE_free,所以我認爲這是使用相同存儲的問題。有針對這個的解決方法嗎?

+0

爲什麼單獨的上下文? – EJP

+0

我有多個不同sni值的端點。你能否安全地與多個套接字共享上下文? – beetfarmer

+0

當然,爲什麼不呢?持有共同的信任和關鍵材料正是SSL上下文的目的。 – EJP

回答

0

我可以在不同的ssl上下文之間重用openssl x509store嗎?

如果您擁有共享信任和密鑰材料,則應重新使用相同的SSL上下文。這就是它的目的。

相關問題