Использование libcurl & SSL - PullRequest
6 голосов
/ 26 мая 2010

Я обнаружил, что на эту тему действительно очень мало информации. У меня уже есть dll, делающие успешные сообщения, используя libcurl.

Я скомпилировал libcurl с openssl для функциональности ssl.

Вот пример моей первоначальной настройки скручивания.

    curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, errorBuffer);

    //curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER , 1);
    //curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST , 1);
    //curl_easy_setopt(curl, CURLOPT_CAINFO , "./ca.cert");

    curl_easy_setopt(handle, CURLOPT_POSTFIELDS, cParam); 
    curl_easy_setopt(handle, CURLOPT_POSTFIELDSIZE, strlen(cParam));
    curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1);
    curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, Request::writer);   
    curl_easy_setopt(handle, CURLOPT_WRITEDATA, &buffer); 
    curl_easy_setopt(handle, CURLOPT_URL, cURL);

Мой вопрос к тем, кто делал это раньше, это так же просто, как просто добавить эти строки выше, чтобы заставить SSL работать (пока существует сертификат)? Или это сложнее?

Самое смешное, что я не совсем уверен, как работает SSL. Я никогда не работал с этим раньше. Нужно ли хранить ключ в моем приложении и отправлять его при каждом запросе? Во всяком случае, мой главный вопрос был первым. Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 12 января 2011

Да, это так просто. Просто убедитесь, что файл ca.cert, который у вас есть, является настоящим сертификатом CA, который может проверить сертификат вашего сервера.

0 голосов
/ 14 июня 2017

Убедитесь, что при использовании CURLOPT_SSL_VERIFYHOST вы устанавливаете фактическое значение 2L (которое является значением по умолчанию) вместо 1 (как показано в качестве комментария в этом примере), если вы действительно хотите проверить совпадения имени хоста, иначе просто проверил бы наличие «общего имени» (CN) в сертификате.

0 голосов
/ 18 марта 2013

Все, что вам нужно сделать, чтобы использовать SSL с libcurl, это дать URL-адрес https вместо URL-адреса http. Единственная опция, которую вам нужно установить с помощью curl_easy_setopt, - это CURLOPT_URL, хотя она просто выведет полученные данные в стандартный вывод, если вы не укажете обратный вызов записи.

CURL *handle = curl_easy_init();
char url[] = "https://google.com";
curl_easy_setopt(handle, CURLOPT_URL, url);
curl_easy_perform(handle);
...