В настоящее время я пытаюсь реализовать мыльный клиент под Windows на C ++. Из-за некоторых технических требований, http и коммуникационный уровень были реализованы с использованием Winhttp API. Кажется, все работает нормально, но, как только TLS 1.1 или 1.2 включены, программное обеспечение не может выполнить рукопожатие SSL. Он просто продолжает посылать пакеты TCP-соединений на сервер.
Я провел несколько тестов, чтобы выяснить, что происходит, и на данный момент это то, что я уже знаю:
Программное обеспечение работает в Windows 10 Pro должным образом (независимо от того, какая версия TLS выбрана). Этого нельзя сказать, когда программное обеспечение развернуто в Windows 10 ltsb 2016 (1607).
Включение поддержки TLS в соответствии с рекомендациями здесь не работает.
Код winhttp можно найти здесь . Я добавил эту модификацию только в строках 351-352:
DWORD dwOpt = WINHTTP_FLAG_SECURE_PROTOCOL_ALL | WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 |WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2;
int res = WinHttpSetOption(pData->hInternet, WINHTTP_OPTION_SECURE_PROTOCOLS, &dwOpt, sizeof(dwOpt));
Спасибо