Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
1 / 1 / 1
Регистрация: 06.06.2009
Сообщений: 116

Отправить Https-запрос банку с использованием SSL

14.07.2015, 15:05. Показов 7577. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Мне нужно написать простой https-клиент, который делает 1 запрос тестовому серверу банка. С понятием Http запросов GET и POST я знаком, но тут тонкость именно в SSL. Где можно посмотреть примеры реализации Http запросов с использованием SSL (сертификат проверять не надо)? Очень не хочется изобретать велосипед...

Спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.07.2015, 15:05
Ответы с готовыми решениями:

Как отправить https запрос? (сокеты)
Собственно, есть обычный рабочий код, который вытаскивает страничку, но по http. Корректировал проверку, менял порт на 443, но бэдреквест...

SSL и SMTP. Как из программы отправить себе письмо в свой ящик
ОТПРАВЛЯЮ ЧЕРЕЗ СОКЕТЫ ЧЕРЕЗ 25 ПОРТ ЧЕРЕЗ СМТП ПРИХОДИТ 530 СООБЩЕНИЕ ПИШЕТ ЧТО МОЕ СООБЩЕНИЕ НЕ ЗАШИФРОВАНО SSL ШИФРОМ ЧТО ДЕЛАТЬ ...

Как организуется защита канала HTTPS с использованием SSL сертификата?
Никак не пойму как организуется защита канала не только от клиента к серверу, но и от сервера к клиенту, если SSL сертификат только у...

17
 Аватар для 1337trix
23 / 24 / 11
Регистрация: 04.12.2014
Сообщений: 422
14.07.2015, 15:43
если язык программирования - c# то проблем в этом нет, что именно не получается? он не сниффиться?
0
1 / 1 / 1
Регистрация: 06.06.2009
Сообщений: 116
14.07.2015, 18:38  [ТС]
Программа должна быть написана на С. Проблема в том, что я не знаю, как накрутить SSL на обычный Http-запрос (например, GET). Програмка формирования Http-запроса не сложная, но цель задачи - именно сформировать Https-запрос, т.е. поднять SSL транспорт. Я не знаю, как это сделать, вот и прошу помощи.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.07.2015, 19:36
Можете использовать такие библиотеки:

WinInet/WinHTTP (являются частью Windows);
Boost.Asio + OpenSSL
libcurl
и т.д.
0
1 / 1 / 1
Регистрация: 06.06.2009
Сообщений: 116
14.07.2015, 19:55  [ТС]
Как я понимаю, методология следующая. Вместо обычого открываю SSL-encrypted сокет и через него выполняю стандартные Http-запросы и получаю ответы. Вся SSL-обвертка мне не видна и работает автоматически внутри этого сокета?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.07.2015, 20:03
Это очень зависит от библиотеки, которую вы используете.
Но обычно различия между использованием TCP и TCP+TLS/SSL минимальны.
В WinHTTP, например, достаточно указать один флаг при создании HTTP-сессии.
В Boost.Asio создается "особый" сокет, но потом все почти так же, как и в
случае с "обычным" сокетом. С "голым" OpenSSL сложнее, там придется вручную
контролировать все детали TLS/SSL-соединения, зато будет полный контроль,
вплоть до выбора алгоритмов шифрования, длины ключей, протоколов обмена
и т.п.
0
1 / 1 / 1
Регистрация: 06.06.2009
Сообщений: 116
14.07.2015, 20:14  [ТС]
Какую библиотеку порекомендуете? Главное условие: программа клиента должна быть написана на С (не С++), ну и желательно максимально простая в использовании, на данном этапе высокая функциональность не нужна, нужна только демонстрация принципа.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.07.2015, 20:38
Лучший ответ Сообщение было отмечено YuryD как решение

Решение

Цитата Сообщение от YuryD Посмотреть сообщение
программа клиента должна быть написана на С (не С++), ну и желательно максимально простая в использовании
Ну тогда точно не Boost (потому что C++) и не OpenSSL (потому что не простая).
Если особых требований нет, я бы предпочел WinInet или WinHttp.
Для того, чтобы отправить запрос, HTTP или HTTPS, в WinInet достаточно
вызвать функции InternetOpen, InternetConnect, затем HttpOpenRequest и
HttpSendRequest, после этого ответ сервера вычитывается серией вызовов
InternetReadFile. Все достаточно просто, если не сказать элементарно,
причем код на 99% идентичный для HTTP и HTTPS.

Дополнительные опции, например проверку серверного сертификата,
установку таймаутов и т.п., можно выставить с помощью InternetSetOption.

Ну и вот:

Введение в WinInet
https://rsdn.ru/article/inet/wininet.xml
1
1 / 1 / 1
Регистрация: 06.06.2009
Сообщений: 116
14.07.2015, 20:46  [ТС]
Спасибо за развернутый ответ! А WinInet предпочтительней, чем WinHttp?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.07.2015, 20:50
Да. Смотрите сравнительную таблицу здесь:

WinInet vs. WinHTTP
https://msdn.microsoft.com/en-... 85%29.aspx

Но если работать с сетью нужно из неинтерактивного приложения, например
из службы, тогда предпочтительнее WinHTTP (у WinInet в этом плане ограничения).
0
1 / 1 / 1
Регистрация: 06.06.2009
Сообщений: 116
14.07.2015, 21:08  [ТС]
А эта библиотека есть в VC2008/10 или GCC? Или ее надо отдельно устанавливать (как, например, OpenSSL)?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.07.2015, 21:35
Эта библиотека, как и WinHTTP, является частью Windows.
Ничего устанавливать не нужно, просто подключайте заголовок
WinInet.h (и еще WinInet.lib) и пользуйтесь.
0
1 / 1 / 1
Регистрация: 06.06.2009
Сообщений: 116
14.07.2015, 22:33  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
просто подключайте заголовок WinInet.h (и еще WinInet.lib)
Я просмотрел диск, у меня указанные файлы есть в 3-х местах:
1. Microsoft SDKs\Windows\v7.0A
2. Microsoft SDKs\Windows\v7.1A
3. Windows Kits\8.0
Откуда порекомендуете подключать?

P.S. В wxDev-C++ все проще, там все в одном экземпляре.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.07.2015, 22:41
А Visual Studio установлена ?
Вот там создаете проект, пишете:
C
1
2
#include <WinInet.h>
#pragma comment(lib, "WinInet.lib")
и все, никаких путей указывать не нужно.
0
1 / 1 / 1
Регистрация: 06.06.2009
Сообщений: 116
14.07.2015, 22:50  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
А Visual Studio установлена ?
Да, 2010-я и 2012-я. Но я работаю в 10-й. 12-ю поставил, чтоб посмотреть навороты из С/С++11, но пока руки не дошли...
Цитата Сообщение от Убежденный Посмотреть сообщение
и все, никаких путей указывать не нужно.
Супер! Спасибо, Вы все так подробно объяснили, что осталось уже только код написать! Буду тренироваться.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.07.2015, 23:03
Как по мне проще curl
0
1 / 1 / 1
Регистрация: 06.06.2009
Сообщений: 116
14.07.2015, 23:27  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Как по мне проще curl
Вы имеете ввиду библиотеку libcurl? В тестовом пример https.c на их сайте вообще 3 строчки кода. Но библиотеку надо качать и ставить. Причем множество вариантов для разных ОС. А какую надо ставить, если компилить я буду на х64, а работать потом и на х64, и на х86?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.07.2015, 23:42
На данный момент приблизительно так:
  1. Скачать исходники libcurl.
  2. Установить OpenSSL.
  3. Прописать пути.
  4. Собрать либу из исходников под нужную платформу.
  5. Использовать.

Библиотека libcurl в С++ для работы по HTTP - тут правда под С++, но есть ссылки на доку.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.07.2015, 23:42
Помогаю со студенческими работами здесь

Как отправить Https Get запрос?
Приветствую! Требуется отправить следующий Get-запрос, который должен вернуть информацию о клиентах в json формате: С HTTPS...

Отправить https get запрос через сокеты
Сабж Юзаю : socket_create socket_connect socket_write socket_read Пытаюсь отправить https запрос (порт 443)

Как отправить запрос по https, используя socket()?
Здраствуйте уважаемые знатоки C# технологий. После целого дня, потраченного на то чтобы запарсить один сайт.. я понял, что оказывается...

Перехватить HTTPS запрос, изменить часть ссылки и отправить на сервер
Приветствую всех. Столкнулся с проблемой перехвата HTTPS запросов. Задача состоит в том что бы перехватить HTTPS запрос, изменить часть...

Как отправить POST или GET запрос на сайт, доступный только по протоколу HTTPS
День добрый, По протоколу HTTP когда получаю страницу все работает отлично, а когда протокол HTTPS запрос идет неправильный. Из...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru