Взаимная SSL-аутентификация с CAPI и OpenSSL
Мне нужно выполнить взаимную аутентификацию SSL из моего клиентского приложения (C++) с использованием OpenSSL (через libcurl). Я читаю сертификаты со смарт-карты с помощью MS Crypto API (CAPI) и драйвера ActivClient, а также выполняю проверку цепочки сертификатов с помощью CAPI (кажется, проще было проверить цепочку сертификатов с помощью OpenSSL, поскольку цепочка сертификатов находится в хранилище сертификатов MS), Я могу преобразовать сертификат клиента из CAPI в OpenSSL, но у меня проблемы с закрытым ключом.
Похоже, что для проверки сертификата моего сервера на сервере мне необходимо предоставить OpenSSL закрытый ключ сертификата клиента. Не совсем понятно, как мне это сделать, или даже если я могу это сделать (это может зависеть от того, помечен ли ключ как "экспортируемый" в сертификате). Я могу попробовать следовать рекомендациям, приведенным в разделе Преобразование закрытого ключа в хранилище Windows в PEM (для OpenSSL), и надеюсь, что ключ можно экспортировать, но мне интересно, иду ли я даже по правильному пути.
Я довольно много искал по этой теме, но не нашел убедительной информации.
Любые советы и / или предложения приветствуются!