首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >winhttp WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR

winhttp WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR
EN

Stack Overflow用户
提问于 2017-11-19 11:49:04
回答 1查看 2.8K关注 0票数 1

我正在使用带有Visual C++ 2015的Casablanka Rest SDK。Casablanka SDK基于winhttp。只要通过SSL发送请求,就会收到异常。例外情况是:

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

问题只出现在Windows2008 R2服务器上。我的运行Windows 10和Windows 2012服务器的笔记本电脑运行正常。

从Windows 2008浏览启用了SSL的网站没有任何问题。但是,我的应用程序就是不能工作,并且会失败,并出现上述错误。

如有任何帮助,我们将非常感谢:)

只需添加winhttp跟踪:

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

EN

回答 1

Stack Overflow用户

发布于 2017-11-20 21:59:11

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

更改:

代码语言:javascript
运行
复制
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));

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47373513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档