希望有人能为我解答这个问题,因为我正在靠墙敲打我的头。我使用LibCurl将简单的文件发布到HTTPS URL。总的来说,它的工作原理,但是联系接收帖子的网站,他们显然已经解决了一个问题,我只是不明白。LibCurl HTTPS证书,序列内部处理?
显然,我准备我的请求,把网址,提供用户和密码的网站。然后该文章包含一个CURL_FORMADD(用于通过多部分表单添加单个文件附件的参数)。
我在解决CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST问题时遇到了问题,并最终使用以下设置工作。
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 1);
问题出在这里。很明显,当我发出curl_easy_perform()时,它会尝试发送请求,响应会回来并说...将证书信息发送给我,然后显然会重新提交包含证书信息的整个包。然后被我发送到的服务器接受。
那么,我该如何告诉LibCurl提交一切...用户,密码和证书凭证,所以我发送的服务器不会拒绝第一个请求,只是为了在随后的循环中获取凭证。
谢谢。
----通过反馈编辑。
虽然寻找到更多,其通过欧根提到...
我已经停用从其他读数“CURLOPT_SSL_VERIFYPEER”,如果这样做可以打开一个交易到一个“人在中间人”妥协。我不想那样。通过寻找认证方法,它是基础,所以当我发出的连接,我沿着
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
发送现在,它与CURLE_SSL_CONNECT_ERROR回来。我试图让sdterror,但是这通过一旦崩溃......
FILE *pLocalFile;
if(fopen_s(&pLocalFile, "MyHTTPS.Log", "w"))
return -1;
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteFileCallback);
curl_easy_setopt(curl, CURLOPT_STDERR, pLocalFile);
像我这样的演出,我得到的DLL出现异常。所以,我甚至不能'看到连接失败是关于什么的......我强烈怀疑是证书。
网站使用什么样的身份验证(基本,NTLM,Cookie等自定义等)?我问的原因是,它可能是libcurl首先试图找出服务器支持哪些认证方法 - 因此它只是发送一个简单的请求而不发送用户/密码 - 然后它会计算出401回复中可用的内容。虽然SSL部分让事情有点混乱...... – 2011-02-28 23:20:46
@Eugen Constantin Dinca,它的证书是我所知道的,我想我会在早上与我的主管核实。 – DRapp 2011-03-01 00:20:16
@Eugen Constantin Dinca,这是基本认证,所以我想我现在正在提供证书信息... – DRapp 2011-03-01 15:39:59