Может ли OpenSSL в Windows использовать системное хранилище сертификатов?

Некоторый рабочий код C ++, который я портирую из Linux в Windows, не работает в Windows, потому что SSL_get_verify_result () возвращает X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY .

Код использовал SSL_CTX_set_default_verify_paths () в Linux, чтобы сообщить SSL, чтобы он просто просматривал стандартные местоположения по умолчанию для хранилища сертификатов.

Можно ли заставить OpenSSL использовать системное хранилище сертификатов?

31
задан StackzOfZtuff 18 May 2016 в 07:50
поделиться

1 ответ

1112 Я сделал это раньше. Надеюсь, это поможет, если это именно то, что вы ищете.

  1. Загрузите свой сертификат (в структуре PCCERT_CONTEXT) из хранилища сертификатов Windows, используя Crypto API.
  2. Получить зашифрованное содержимое в двоичном формате как есть. [PCCERT_CONTEXT->pbCertEncoded].
  3. Разобрать этот двоичный буфер в объект сертификата X509, используя метод d2i_X509() OpenSSL.
  4. Получить дескриптор к хранилищу доверия OpenSSL, используя метод SSL_CTX_get_cert_store().
  5. Загрузите вышеупомянутый разобранный сертификат X509 в это хранилище доверия, используя метод X509_STORE_add_cert().
  6. Готово!
41
ответ дан 27 November 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: