Взаимная аутентификация SSLv3 с использованием libcurl и смарт-карты

Мне нужна помощь в установлении канала связи для использования веб-сервиса с использованием SSLv3 с взаимной аутентификацией, libcurl и смарт-карты, которая будет хранить сертификат клиента, пару ключей и будет отвечать за подписи, шифрование и т. Д.

В целях тестирования без использования смарт-карты следующий краткий код работает без сбоев:

....
(SOAP message configurations)
....

curl_easy_setopt (curl, CURLOPT_USE_SSL, CURLUSESSL_ALL);
curl_easy_setopt (curl, CURLOPT_SSLVERSION, 3);
curl_easy_setopt (curl, CURLOPT_SSL_VERIFYPEER, 1);

curl_easy_setopt (curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_easy_setopt (curl, CURLOPT_SSLCERT, "clientCertificateFile");
curl_easy_setopt (curl, CURLOPT_KEYPASSWD, "testPrivateKeyPass");
curl_easy_setopt (curl, CURLOPT_SSLKEY, "testPrivateKeyFile");
curl_easy_setopt (curl, CURLOPT_CAINFO, "CAcertificateFile");
curl_easy_setopt (curl, CURLOPT_URL, "URLtoWebService");

curl_easy_perform (curl);

После запуска этого кода я могу установить связь с помощью SSLv3 и получить ожидаемый ответ от веб-службы. Однако мне нужно установить этот безопасный канал с помощью смарт-карты. У меня есть свободный доступ к следующей информации:

  • "clientCertificateFile" - хранится на смарт-карте в формате PEM. Это можно прочитать через функцию доступа.
  • "CAcertificateFile" - хранится на диске в формате PEM. Это можно прочитать через функцию доступа.
  • "URLtoWebService" - хранится в приложении.

"testPrivateKeyFile" и "testPrivateKeyPass" - это временные файлы, используемые только для тестирования и должны быть заменены смарт-картой.

Я сомневаюсь: как использовать смарт-карту для замены секретного ключа и пароля в процессе установки libcurl?

Смарт-карта не позволяет получить доступ к закрытому ключу, только к открытому ключу, как и ожидалось. Я могу отправить на смарт-карту данные для подписи или шифрования, используя закрытый ключ, и получить полученный буфер.

Есть ли способ перенаправить часть рукопожатия подключения SSLv3 для использования моей смарт-карты? Некоторые настройки в lib ssl или libcurl?

Спасибо за внимание!

0 ответов

Другие вопросы по тегам