我有使用HTTP请求测试(并批准)的代码。发布计划于明天进行……但是,我们的客户针对(第三方)发布服务器的首次测试表明,它需要HTTPS。至少从表面上看,我们代码中需要更改的(唯一的)一部分是:
HTTPClientSession session( myUri.GetHost(), myUri.GetPort() );
并且所需的更改似乎是:
HTTPSClientSession session( myUri.GetHost(), myUri.GetPort(), context );
建立该context
的简单直接方法是什么?我最接近的猜测是跟随this question的开头,但是...
我非常不了解支持HTTPS的SSL层-我需要获得证书吗? This question似乎建议像我这样的客户端连接通常不需要证书(访问服务器需要登录)...但是如果是这样的话,您该怎么办?我什至可以使用HTTPSClientSession
吗?
首先,您需要通过安装OpenSSL向Poco添加一层SSL功能。构建OpenSSL和相应的Poco模块(注意为您的部署生成正确的32位或64位版本)。在Windows上,这会将libssl.dll
,libcrypto.dll
,PocoNetSSL.dll
和PocoCrypto.dll
添加到您正在使用的DLL中。
关于代码,this question有两个答案,都给出了如何使用HTTPSClientSession
的信息性示例。第一个答案仅将一行代码添加到您已有的代码中,但是它使用VERIFY_NONE
,因此绕过了证书验证。第二个答案使用VERIFY_STRICT
,并转到另一个极端。是否选择,还是在两者之间选择,取决于您的应用程序。在我的应用程序中,HTTPS根本没有任何好处,第一个(简单)的答案立即可用。第二个答案不能立即生效,因此我无法对其进行进一步评论。