У меня есть приложение для Windows на C++, разработанное с использованием Visual Studio 2017 в системе Windows 10. Это приложение использует cpprestsdk для отправки запроса на сервер REST. Мое приложение отлично работает на машине с Windows 10 с правильной отправкой запроса через ssl на сервер отдыха. Я не создавал никаких локальных сертификатов, чтобы мое приложение работало в Windows 10.
Однако одно и то же приложение при портировании на Windows 7 (64-разрядная версия) не может отправлять POST-запрос с протоколом SSL на сервер отдыха.
Тот же запрос работает без SSL, (http: // HOST / API работает) но (https: // хост / api терпит неудачу) давая следующую ошибку.
winhttpsendrequest 12029 не удалось установить соединение с сервером.
В тех же окнах 7 PostMan может успешно отправлять https-запрос. Понятия не имею, что могло быть не так с реализацией.
Может ли кто-нибудь поделиться, что может быть причиной сбоя запроса POST в Windows 7?





Я немного опоздал с ответом, но надеюсь, что это поможет другим, кто сталкивается с той же проблемой ...
Я думаю, что ваш сервер настаивает на использовании версии 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.