LibCurl HTTPS凭据,内部处理序列?

时间:2011-02-28 21:59:42

标签: c++ ssl libcurl credentials

希望有人可以为我回答这个问题,因为我正在撞墙。我正在使用LibCurl将一个简单的文件发布到HTTPS URL。总的来说,它有效,但是联系收到帖子的网站,他们显然已经解决了问题,我只是没有得到它。

显然,我准备了我的请求,放了URL,为网站提供了USER和PASSWORD。该帖子包含一个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提交一切......用户,密码和证书凭证都在前面,所以我发送给的服务器不会拒绝第一个请求,只是为了获得后续周期的凭证。 / p>

感谢。

----通过反馈进行编辑。

正在考虑欧根提到的更多......

我已经从其他读数中禁用了“CURLOPT_SSL_VERIFYPEER”,这样做可以打开一个事务,直到“中间人”妥协。我不希望这样。通过查找身份验证方法,它是BASIC,所以当我发出连接时,我发送

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导致异常。所以,我甚至无法看到连接失败的原因......我强烈怀疑它是证书。

1 个答案:

答案 0 :(得分:0)

你需要把事情分开,以便更容易解决这个问题。

首先修复SSL连接/握手,这样就不会出现任何与SSL相关的问题或错误。

然后确保提供必要的HTTP身份验证并设置基本功能,并且您只需要执行单个HTTP请求即可获得正确的响应(假设这确实是服务器所需的)。

“DLL导致异常”似乎是第三个问题,并且与其他东西无关。很难说你为什么会这样,因为我们没有完整了解你正在做什么。