gpt4 book ai didi

c++ - winhttp WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR

转载 作者:行者123 更新时间:2023-11-28 01:40:24 29 4
gpt4 key购买 nike

我在 Visual C++ 2015 中使用 Casablanka Rest SDK。Casablanka SDK 基于 winhttp。每当通过 SSL 发送请求时,都会收到异常。异常(exception)情况是:

“SSL 错误:WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR 内部错误。”

问题仅出现在 Windows 2008 R2 服务器上。我的笔记本电脑运行 Windows 10 和 Windows 2012 服务器都可以。

从 Windows 2008 浏览启用 SSL 的网站没有问题。但是,我的应用程序无法正常工作,并因上述错误而失败。

感谢任何帮助:)

只需添加 winhttp 跟踪:

"23:24:31.228::usr-req 003B2A60 收到 OnTcpConnected 回调23:24:31.244::异步 I/O 操作完成(重叠 = 00397790,#bytes/info = 0,错误 = SEC_E_INVALID_TOKEN (-2146893048))23:24:31.244::sys-sender 处理 HttpSendHttpRequest 完成(error-cdoe = SEC_E_INVALID_TOKEN (0x80090308),#bytes = 0,重叠 = 00397790)23:24:31.244::sys-sender 请求失败;错误 = SEC_E_INVALID_TOKEN (-2146893048)23:24:31.244::ERROR_WINHTTP_FROM_WIN32 映射 (SEC_E_INVALID_TOKEN) -2146893048 到 (ERROR_WINHTTP_SECURE_FAILURE) 12175"

最佳答案

Windows 2008 无法协商 TLS 1.2。因此,我降级了 Rest SDK (cpprestsdk\Release\src\http\client\http_client_winhttp.cpp) 中的协议(protocol)。

变化:

DWORD secure_protocols = WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 | WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 | WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1;
if (IsWindowsVersionOrGreater(6, 3, 0)) {
secure_protocols += WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2;
}
win32_result = ::WinHttpSetOption(m_hSession, WINHTTP_OPTION_SECURE_PROTOCOLS, &secure_protocols, sizeof(secure_protocols));

我希望这对面临同样问题的人有所帮助。

关于c++ - winhttp WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47373513/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com