Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Limb0
19 / 19 / 0
Регистрация: 22.01.2012
Сообщений: 88
#1

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

06.10.2013, 23:20. Просмотров 1390. Ответов 14
Метки нет (Все метки)

Здравствуйте, есть следующий код:
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");
путь к файлу. Но у меня этот код не хочет работать. Пишет что не находит сертификатов. Может кто-то знает где здесь ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2013, 23:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как правильно подключить набор сертификатов в curl? (C++):

Как правильно подключить curl библиотеку? - C++
Здравствуйте, я хотел в своем проекте использовать библиотеку curl, для этого я: 1. Скачал архив з оф. сайта. 2. Затем по инструкции в...

Как подключить CURL? - C++
Как подключить CURL к MSVS? У меня ступор, начиная от того какой архив качать

Как подключить curl; ошибка "Against undefined symbol `curl_global_init'" - C++
Копирую cодержимое папки libs и includes в папку curl пишу в нетбинсе #include &quot;curl/curl.h&quot; выдает ошибку

Подключить CURL к MSVC - C++
Не могу подключить curl из урока http://www.cyberforum.ru/blogs/131347/blog1151.html Без понятие, что и куда скидывать. Уже напихал всё,...

Как правильно подключить lib - C++
Добрый день. Пишу консольную программу на C++ (без использования Qt) с помощью редактора Qt Creator. Она работает, но в Qt уж очень...

Как правильно подключить модули? - C++
Задача: Даны натуральное число n, действительные числа x1,y1; x2,y2;... xn,yn;. Найти площадь n-угольника, вершины которого при некотором...

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

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

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

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

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

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

Добавлено через 1 минуту
Limb0, В визуал студио нужно файлы кидать не в папку с эксе, а в папку с исходником. Мб ты перепутал?
1
Limb0
19 / 19 / 0
Регистрация: 22.01.2012
Сообщений: 88
07.10.2013, 00:03  [ТС] #9
Сейчас попробую
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
07.10.2013, 00:04 #10
Limb0, так у меня сертификатов нету, щас попытаюсь.
0
Limb0
19 / 19 / 0
Регистрация: 22.01.2012
Сообщений: 88
07.10.2013, 00:07  [ТС] #11
Кажется уже заработало щас я посмотрю на другие https сайты и тогда точно скажу
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
07.10.2013, 00:11 #12
Да не работает, ладно разбирайся с темой, там мб нужно из этих троих файлов создать один какой нить. Разбирайся я не помню что куда.
0
Limb0
19 / 19 / 0
Регистрация: 22.01.2012
Сообщений: 88
07.10.2013, 00:16  [ТС] #13
Если файл положить в папку с исходниками и написать curl_easy_setopt(curl, CURLOPT_CAINFO, "cacert.pem"); тогда все работает, но когда я хочу указать полный путь тогда не работает.
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
07.10.2013, 00:22 #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 и все.
1
Limb0
19 / 19 / 0
Регистрация: 22.01.2012
Сообщений: 88
07.10.2013, 00:25  [ТС] #15
Оказалось все банально просто, я забыл добавить по еще одному слешу (мой полный путь C:\\a\\a\\a\\cacert.pem) так как один слеш вызывает управляючие последовательности.

Добавлено через 1 минуту
А у меня тот пример что у тебя не работает,
Под работает я имел ввиду то что не показуются ошибки. Но я проверил на других сайтах там все нормально. Спасибо за помощь.
0
07.10.2013, 00:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2013, 00:25
Привет! Вот еще темы с ответами:

Как правильно подключить библиотеку SDL - C++
Здравствуйте, подскажите, пожалуйста, как правильно подключить библиотеку SDL. Я пользуюсь компилятором Code::Blocks. При подключении...

Как правильно подключить данную библиотеку ? - C++
Доброго времени суток подскажите пожалуйста как правильно подключить данную библиотеку в C++Builder 10.1 Berlin скачка библиотеки...

Как правильно из одного cpp подключить другой - C++
Есть 2 .cpp файла: a.cpp и b.cpp. Когда пишу: /* a.cpp */ #include &quot;b.cpp&quot; Выдает ошибку. Как правильно из одного cpp...

Как правильно подключить свой заголовочный файл? - C++
Есть два файла. Основной файл - &quot;2.cpp&quot; #include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;string.h&gt; #include &lt;map&gt; ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.