我正在使用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错误,指出我没有指定所需的凭据。此证书通过浏览器工作,因此我知道证书有效。
对此工作的任何帮助表示赞赏。谢谢!
答案 0 :(得分:3)
如果你得到403,你已经通过了SSL层,所以它会表明证书已经足够好了,但是服务器在那里正在谈论其他事情。
但请注意,CURLOPT_CA *选项用于指定您的CA证书捆绑包(或路径),因此以上行根本不设置任何客户端证书!
有关如何使用libcurl的客户端证书的小示例,请参阅: