Форум программистов, компьютерный форум CyberForum.ru

Как правильно подключить набор сертификатов в curl? - C++

Восстановить пароль Регистрация
 
Limb0
 Аватар для Limb0
19 / 19 / 0
Регистрация: 22.01.2012
Сообщений: 88
06.10.2013, 23:20     Как правильно подключить набор сертификатов в curl? #1
Здравствуйте, есть следующий код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <curl/curl.h>
#include <string>
 
int main(void)
{
  CURL *curl;
  CURLcode res;
 
 
  curl_global_init(CURL_GLOBAL_DEFAULT);
 
  curl = curl_easy_init();
  if(curl) 
  {
      curl_easy_setopt (curl, CURLOPT_SSL_VERIFYPEER, TRUE);
      curl_easy_setopt(curl, CURLOPT_CAINFO, "cacert.pem");
    curl_easy_setopt(curl, CURLOPT_URL, "https://google.com/");
 
 
    res = curl_easy_perform(curl);
    /* Check for errors */ 
    if(res != CURLE_OK)
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
              curl_easy_strerror(res));
 
    /* always cleanup */ 
    curl_easy_cleanup(curl);
  }
 
  curl_global_cleanup();
 
  return 0;
}
Чтобы работать с https соединением мне нужно испольнозвать набор сертификатов (ca cerf bundle) который можна скачать здесь . Чтоб все заработало мне нужно указать здесь
curl_easy_setopt(curl, CURLOPT_CAINFO, "cacert.pem");
путь к файлу. Но у меня этот код не хочет работать. Пишет что не находит сертификатов. Может кто-то знает где здесь ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2013, 23:20     Как правильно подключить набор сертификатов в curl?
Посмотрите здесь:

C++ VS2008.Как правильно подключить шаблонный класс?
C++ Как правильно подключить модули?
C++ Как правильно из одного cpp подключить другой
Как правильно подключить curl библиотеку? C++
Как правильно подключить lib C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.10.2013, 23:30     Как правильно подключить набор сертификатов в curl? #2
мб лучше не проверять сертификаты?
C++
1
curl_easy_setopt (curl, CURLOPT_SSL_VERIFYPEER, 0);
???
Limb0
 Аватар для Limb0
19 / 19 / 0
Регистрация: 22.01.2012
Сообщений: 88
06.10.2013, 23:37  [ТС]     Как правильно подключить набор сертификатов в curl? #3
ninja2,
Я знаю что так можно сделать, но это как-то не очень интересно и не безопасно (в теории), да и у меня программа будет связанная с криптографией поэтому этот вариант мне не очень подходит.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.10.2013, 23:47     Как правильно подключить набор сертификатов в curl? #4
Limb0, ну чо от смотри, я точно не помню, но ты просто будешь проверять как бы хороший это ssl или плохой, просто можно например если сервер поддерживает ssl его настроить, самому сгенерировать сертификат или хз я не помню точно и закинуть на сервер, тогда когда мы заходим по https на сервер, то нас предупреждают, что не извесный сертификат ssl, типо вы доверяете ему, просто он может быть не надежным, ну и ты будешь что то вроде этой проверки делать, а если сертификат известный, там вроде заказывать нада где то хз. то тогда вроде браузер видит, ага сертификат надежный и без предупреждений загружает страницу.

Ну в принципе проверка тебе ничего не даст, в любом случае главное страницу считать.

Добавлено через 6 минут
Хотя кто его знает я в этом не силен, мб и нужно если писать например приложение для вебмани типо кошелька, но я б фиг ты таким приложением пользовался, а то такое приложение отошлет куда нить на сервер левый запрос с логином и паролем.
Limb0
 Аватар для Limb0
19 / 19 / 0
Регистрация: 22.01.2012
Сообщений: 88
06.10.2013, 23:48  [ТС]     Как правильно подключить набор сертификатов в curl? #5
ninja2,
Конечно это маловероятно, но при отключении проверки сертификата з набором сертификатов которые есть у меня cacert.pem может происходить man it the middle attack. Да и еще я хочу подключить проверку так как на Stack Owerflow да и на других сайтах в некоторых это работало, но я не могу понять где моя ошибка в указании пути. Во всех примерах которые используються в интернете пишут просто curl_easy_setopt(curl, CURLOPT_CAINFO, "path\to\cacert.pem"); а конкретного примера я не видел. Ну если за 2-3 дня я не найду решения, то тогда отключу проверку.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.10.2013, 23:55     Как правильно подключить набор сертификатов в curl? #6
Limb0, а что у тебя за среда визуал студио???

Добавлено через 5 минут
Цитата Сообщение от Limb0 Посмотреть сообщение
пишут просто curl_easy_setopt(curl, CURLOPT_CAINFO, "path\to\cacert.pem"); а конкретного примера я не видел. Ну если за 2-3 дня я не найду решения, то тогда отключу проверку.
Правильно пишут, мб ты не туда файл кидаешь раз его не находит?
Limb0
 Аватар для Limb0
19 / 19 / 0
Регистрация: 22.01.2012
Сообщений: 88
06.10.2013, 23:56  [ТС]     Как правильно подключить набор сертификатов в curl? #7
VS Express 2012
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
07.10.2013, 00:01     Как правильно подключить набор сертификатов в curl? #8
Limb0, вообще отключи ее нафиг, если парсер пишешь, она и нафиг не нужна.

Добавлено через 32 секунды
Limb0, а у меня 2010, ты наверно не в ту папку кидаешь файл.

Добавлено через 1 минуту
Limb0, Просто создай из программы файл например ofstrea f("text.html",ofstream::out); и посмотри по папкам где он создастся в ту папку и кидай свой файл. Я тоже раз перепутал случайно, но потом разобрался куда файлы кидать.

Добавлено через 1 минуту
Limb0, В визуал студио нужно файлы кидать не в папку с эксе, а в папку с исходником. Мб ты перепутал?
Limb0
 Аватар для Limb0
19 / 19 / 0
Регистрация: 22.01.2012
Сообщений: 88
07.10.2013, 00:03  [ТС]     Как правильно подключить набор сертификатов в curl? #9
Сейчас попробую
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
07.10.2013, 00:04     Как правильно подключить набор сертификатов в curl? #10
Limb0, так у меня сертификатов нету, щас попытаюсь.
Limb0
 Аватар для Limb0
19 / 19 / 0
Регистрация: 22.01.2012
Сообщений: 88
07.10.2013, 00:07  [ТС]     Как правильно подключить набор сертификатов в curl? #11
Кажется уже заработало щас я посмотрю на другие https сайты и тогда точно скажу
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
07.10.2013, 00:11     Как правильно подключить набор сертификатов в curl? #12
Да не работает, ладно разбирайся с темой, там мб нужно из этих троих файлов создать один какой нить. Разбирайся я не помню что куда.
Limb0
 Аватар для Limb0
19 / 19 / 0
Регистрация: 22.01.2012
Сообщений: 88
07.10.2013, 00:16  [ТС]     Как правильно подключить набор сертификатов в curl? #13
Если файл положить в папку с исходниками и написать curl_easy_setopt(curl, CURLOPT_CAINFO, "cacert.pem"); тогда все работает, но когда я хочу указать полный путь тогда не работает.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
07.10.2013, 00:22     Как правильно подключить набор сертификатов в curl? #14
Limb0, какой полный путь? А у меня тот пример что у тебя не работает, видимо у гугла https нету, от для веб мани заработало.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <curl/curl.h>
#pragma comment(lib,"curllib.lib")
#include <string>
 
int main(void)
{
  CURL *curl;
  CURLcode res;
 
 
  curl_global_init(CURL_GLOBAL_DEFAULT);
 
  curl = curl_easy_init();
  if(curl) 
  {
      curl_easy_setopt (curl, CURLOPT_SSL_VERIFYPEER, TRUE);
      curl_easy_setopt(curl, CURLOPT_CAINFO, "cacert.pem");
    curl_easy_setopt(curl, CURLOPT_URL, "https://my.webmoney.ru/login.aspx?ReturnUrl=%2fdashboard.aspx");
 
 
    res = curl_easy_perform(curl);
    /* Check for errors */ 
    if(res != CURLE_OK)
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
              curl_easy_strerror(res));
 
    /* always cleanup */ 
    curl_easy_cleanup(curl);
  }
 
  curl_global_cleanup();
 
  return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от Limb0 Посмотреть сообщение
Если файл положить в папку с исходниками и написать curl_easy_setopt(curl, CURLOPT_CAINFO, "cacert.pem"); тогда все работает, но когда я хочу указать полный путь тогда не работает.
Какой полный путь? Если полный путь то тогда нужно начинать с диска например C:/papka1/papka2/cacert.pem либо относительный от того места где твой файл лежит. там например ../../papka/cacert.pem

Добавлено через 1 минуту
лучше как есть, потом рядом с exe файлом скинеш файл pem и все.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2013, 00:25     Как правильно подключить набор сертификатов в curl?
Еще ссылки по теме:

Как подключить curl; ошибка "Against undefined symbol `curl_global_init'" C++
Как правильно подключить библиотеку SDL C++
C++ Как подключить CURL?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Limb0
 Аватар для Limb0
19 / 19 / 0
Регистрация: 22.01.2012
Сообщений: 88
07.10.2013, 00:25  [ТС]     Как правильно подключить набор сертификатов в curl? #15
Оказалось все банально просто, я забыл добавить по еще одному слешу (мой полный путь C:\\a\\a\\a\\cacert.pem) так как один слеш вызывает управляючие последовательности.

Добавлено через 1 минуту
А у меня тот пример что у тебя не работает,
Под работает я имел ввиду то что не показуются ошибки. Но я проверил на других сайтах там все нормально. Спасибо за помощь.
Yandex
Объявления
07.10.2013, 00:25     Как правильно подключить набор сертификатов в curl?
Ответ Создать тему
Опции темы

Текущее время: 23:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru