С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/29: Рейтинг темы: голосов - 29, средняя оценка - 4.86
 Аватар для Limb0
20 / 20 / 0
Регистрация: 22.01.2012
Сообщений: 88

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

06.10.2013, 23:20. Показов 5813. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.10.2013, 23:20
Ответы с готовыми решениями:

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

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

Как подключить cURL в Денвере?
Подскажите как подключить cURL в Денвере? &lt;?php //Инициализация cURL и задание адреса $ch = curl_init('http://europaplus.ru/'); ...

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

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

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

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

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

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

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

Добавлено через 1 минуту
А у меня тот пример что у тебя не работает,
Под работает я имел ввиду то что не показуются ошибки. Но я проверил на других сайтах там все нормально. Спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.10.2013, 00:25
Помогаю со студенческими работами здесь

Как подключить curl на хостинге?
подскажите как подключить стандартную библиотеку curl на хостинге где он из-за некоторых причин отключен? Добавлено через 2 минуты ...

Как правильно Отправить http заголовок в php curl?
Здравствуйте, помогите пожалуйста переделать запрос из curl в php curl Если ввести этот запрос просто в терминале сервера то придет...

Как правильно сформировать запрос anti-captcha.com через curl?
Подскажите как правильно сформировать запрос https://api.anti-captcha.com/createTask из документации...

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

подключить curl
Доброго времени суток, уважаемые форумчане! Всех с наступающим! Помогите плиз если кто еще не начал празновать... Не получается...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru