С++/OpenSSL: используйте корневой ЦС из буфера, а не файла (SSL_CTX_load_verify_locations)
Я использую OpenSSL для проверки сертификата сервера. Поскольку OpenSSL поставляется без каких-либо встроенных корневых центров сертификации, мы должны сами раздавать сертификат корневого ЦС с помощью нашего программного обеспечения (мы статически связываем OpenSSL). Обычно способ заключается в распространении файла сертификата в формате PEM и вызове SSL_CTX_load_verify_locations.
Однако эта функция принимает путь к файлу/каталогу и считывает файлы корневого сертификата непосредственно из файловой системы. Нам бы очень хотелось иметь возможность жестко закодировать сертификат в нашем двоичном файле, а не сохранять его в файловой системе.
Другими словами, нам бы очень хотелось иметь такую функцию, как SSL_CTX_load_verify_locations, которая принимает X509 * вместо пути к файлу.
Есть ли что-то подобное? или есть простой способ взломать его вместе? Мы не можем найти много информации об этом.
Большое спасибо за любые предложения!
Ответы
Ответ 1
Функция SSL_CTX_get_cert_store()
может использоваться для получения дескриптора хранилища сертификатов, используемого для проверки (X509_STORE *
), а функция X509_STORE_add_cert()
(в openssl/x509_vfy.h
) затем может использоваться для добавления сертификата непосредственно в это хранилище сертификатов.