2011-10-18 21 views
3

客户端证书我使用的libcurl从远程服务器下载文件。该远程服务器需要客户端证书。以下是我已经尝试了选项:与libcurl中

curl_easy_setopt(pCurl, CURLOPT_URL, url); 
curl_easy_setopt(pCurl, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_easy_setopt(pCurl, CURLOPT_SSL_VERIFYHOST, 2); 
curl_easy_setopt(pCurl, CURLOPT_VERBOSE, 1); 
curl_easy_setopt(pCurl, CURLOPT_CERTINFO, 1L); 
curl_easy_setopt(pCurl, CURLOPT_SSL_VERIFYPEER, 1); 
//the following two lines specify the path to my valid client certificate 
curl_easy_setopt(pCurl, CURLOPT_CAINFO, "c:\\Delta.p12"); 
curl_easy_setopt(pCurl, CURLOPT_CAPATH, "c:\\Delta.p12"); 

当我做了HTTPS请求,我得到一个403 Forbidden错误,说我没有指定所需要的凭据。该证书通过浏览器工作,所以我知道该证书是有效的。

任何帮助,使他们这项工作表示赞赏。谢谢!

回答

2

如果你得到一个403,你已经得到了通过SSL层,这将表明证书是不够好,但该服务器有谈论别的东西。

但要注意的是,CURLOPT_CA *选项用于指定CA证书束(或路径),所以上面的行没有设置任何客户端证书在所有!

对于一个小例子,显示如何使用libcurl的客户端证书,请参阅本:

http://curl.haxx.se/libcurl/c/simplessl.html

+0

谢谢你,你的榜样帮助我们得到它的工作。 – kmehta