Клиентские сертификаты с LibCUrl - PullRequest
4 голосов
/ 18 октября 2011

Я использую libCurl для загрузки файла с удаленного сервера.Этот удаленный сервер требует клиентских сертификатов.Вот варианты, которые я попробовал:

curl_easy_setopt(pCurl, CURLOPT_URL, url);
curl_easy_setopt(pCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_easy_setopt(pCurl, CURLOPT_SSL_VERIFYHOST, 2);
curl_easy_setopt(pCurl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(pCurl, CURLOPT_CERTINFO, 1L);
curl_easy_setopt(pCurl, CURLOPT_SSL_VERIFYPEER, 1);
//the following two lines specify the path to my valid client certificate
curl_easy_setopt(pCurl, CURLOPT_CAINFO, "c:\\Delta.p12");
curl_easy_setopt(pCurl, CURLOPT_CAPATH, "c:\\Delta.p12");

Когда я делаю запрос Https, я получаю ошибку 403: Запрещено, которая говорит, что я не указал необходимые учетные данные.Этот сертификат работает через браузер, поэтому я знаю, что сертификат действителен.

Любая помощь в получении этой работы приветствуется.Спасибо!

1 Ответ

3 голосов
/ 19 октября 2011

Если вы получаете 403, вы уже прошли уровень SSL, поэтому это будет означать, что сертификат был достаточно хорош, но сервер говорит о чем-то другом.

Но обратите внимание, что параметры CURLOPT_CA *используются для указания вашего сертификата CA (или пути), поэтому в приведенных выше строках вообще не устанавливается сертификат клиента!

Небольшой пример, показывающий, как использовать сертификат клиента с libcurl, см. здесь:

http://curl.haxx.se/libcurl/c/simplessl.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...