2016-11-30 3 views
1

У меня есть приложение C++, которое создает несколько http-клиентов для разных конечных точек, используя OpenSSL. Во время настройки контекста ssl я загружаю файл pem Mozilla в один объект X509STORE.Можно ли повторно использовать opensl x509store между отдельными контекстами ssl?

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

Можно ли повторно использовать opensl x509store между отдельными контекстами ssl?

Вы должны использовать один и тот же контекст SSL, если у вас есть общий доверительный и ключевой материал. Вот для чего это.