2011-10-18 59 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を取得します。この証明書はブラウザ経由で動作するので、証明書が有効であることがわかります。

この作品を手にするにはどんな助けがありがとうございます。ありがとう!

答えて

2

403を取得した場合、既にSSLレイヤーが渡されているため、証明書は十分であるが、サーバーはそこに何か他のことについて話していることを示します。

しかし、CURLOPT_CA *オプションはCA証明書バンドル(またはパス)を指定するために使用されるので、上記の行はクライアント証明書をまったく設定しません。この参照、libcurlのでクライアント証明書を使用する方法を示し小さな例えば

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

+0

を感謝し、あなたの例では、私たちが取り組んでそれを得る助けました。 – kmehta

関連する問題