cpprestsdk SSL发布不适用于Windows7但适用于Windows 10

时间:2018-09-02 18:26:29

标签: windows rest ssl visual-c++ casablanca

我有一个Windows 10系统上使用Visual Studio 2017开发的C ++ Windows应用程序。该应用程序使用cpprestsdk将请求发布到REST Server。我的应用程序在Windows 10计算机上运行正常,并且可以通过ssl将请求正确发布到其余服务器。我没有创建任何本地证书来使我的应用程序在Windows 10上运行。

但是,同一应用程序在Windows 7(64位)上移植时,无法通过SSL协议向其他服务器发送POST请求。

相同的请求在没有SSL的情况下仍有效,(http://HOST/API在有效) 但是(https://host/api失败) 通过给出以下错误。

winhttpsendrequest 12029无法与服务器建立连接。

在同一Windows 7中,PostMan可以成功发布https请求。 不知道实施可能出什么问题。

任何人都可以分享Windows 7上的POST请求失败的原因是什么吗?

1 个答案:

答案 0 :(得分:2)

我的答案有点晚了,但我希望它可以帮助遇到同样问题的其他人...

我认为您的服务器坚持使用高于1.0的tls版本,这是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