4

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 エラーが表示されます。この証明書はブラウザ経由で機能するため、証明書が有効であることはわかっています。

この作業を行うための助けをいただければ幸いです。ありがとう!

4

1 に答える 1

4

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

ただし、CURLOPT_CA *オプションはCA証明書バンドル(またはパス)を指定するために使用されるため、上記の行ではクライアント証明書はまったく設定されないことに注意してください。

libcurlでクライアント証明書を使用する方法を示す小さな例については、以下を参照してください。

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

于 2011-10-18T21:38:32.067 に答える