Сообщение SSL cpprestsdk не работает на Windows7, но работает на Windows 10 - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть приложение C ++ для Windows, разработанное с использованием Visual Studio 2017 в системе Windows 10. Это приложение использует cpprestsdk для отправки запроса на REST Server. Мое приложение отлично работает на компьютере с Windows 10 с правильным отправкой запроса по ssl на остальной сервер. Я не создал ни одного локального сертификата, чтобы приложение работало на Windows 10.

Однако это же приложение при переносе в Windows 7 (64-разрядная версия) не может выполнить запрос POST по протоколу SSL для остальных серверов.

Тот же запрос работает без SSL, (http://HOST/API работает) но (https://host/api не удается) выдав следующую ошибку.

winhttpsendrequest 12029 не удалось установить соединение с сервером.

Из того же Windows 7 PostMan может успешно отправить запрос https. Понятия не имею, что может быть не так с реализацией.

Может ли кто-нибудь поделиться, что может быть причиной сбоя запроса POST в Windows 7?

1 Ответ

0 голосов
/ 25 января 2019

Я немного опоздал с ответом, но надеюсь, что он может помочь другим, кто сталкивается с той же проблемой ...

Я думаю, что ваш сервер настаивает на использовании версии tls выше 1.0, что является значением по умолчанию в Windows 7. К сожалению, cpprestsdk не может быть настроен для использования конкретной версии tls. В Windows cpprestsdk использует WinHTTP, который предоставляет два дескриптора, но только один из них может быть использован для настройки tls (я не помню имен дескрипторов на данный момент). К сожалению, собственный дескриптор, к которому имеет доступ cpprestsdk, не может быть использован для настройки tls.

Единственный обходной путь - настроить Windows 7 (и косвенно WinHTTP) для использования определенной версии tls по умолчанию. Инструкции о том, как это сделать, можно найти здесь: https://support.microsoft.com/en-ca/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi.

...