Как сделать SSL запрос

Данный пример показывает, как установить HTTP соединение через Secure Socket Layer (SSL) или Private Communications Technology (PCT) используя WinInet API-вызовы. Защищённый HTTP (HTTPS://) располагаетня на 443 порту.

Следующий пример может быть использован для установления HTTPS соединения:

 ...
hOpen = InternetOpen (...);
Connect = InternetConnect (
hOpen, // обработчик InternetOpen
"MyHttpServer", // Имя сервера
INTERNET_DEFAULT_HTTPS_PORT,// По умолчанию HTTPS порт - 443
"", // Имя пользователя
"", // Пароль пользователя
INTERNET_SERVICE_HTTP, // Сервис
0, // Флаги
0 // Контекст
);
hReq = HttpOpenRequest (
hConnect, // Обработчик InternetConnect
"GET", // Метод
"", // Имя объекта
HTTP_VERSION, // Версия
"", // Ссылка (Referer)
NULL, // Дополнительные заголовки
INTERNET_FLAG_SECURE, // Флаги
0 // Контекст
);
...

Всё отличие при использовании HTTPS вместо HTTP заключается в следующем:

  • InternetConnect использует INTERNET_DEFAULT_HTTPS_PORT вместо INTERNET_INVALID_PORT_NUMBER или INTERNET_DEFAULT_HTTP_PORT

  • HttpOpenRequest использует опцию INTERNET_FLAG_SECURE в добавление ко всем остальным опциям.

Чтобы обойти ошибки сертификации, можно использовать следующие две опции в HttpOpenRequest либо в InternetOpenUrl:

  • INTERNET_FLAG_IGNORE_CERT_CN_INVALID - Игнорирует ошибки, которые могут возникать при несовпадении имени хоста сервера и имени хоста, указанном в запросе.

  • INTERNET_FLAG_IGNORE_CERT_DATE_INVALID - Игнорирует ошибки, связанные с истекшим сроком действия сертификата сервера.

Более полная информация по этим флагам расписана в документации Internet Client SDK.

 
« Предыдущая статья   Следующая статья »