2016-05-31 17 views
3

私はlibcurl-4 dllを使用しているコマンドラインアプリケーションを使用しています。現在、私のCA証明書を自分の作業ディレクトリに配置して名前をとCURLOPT_SSLCERTそれらの名前の前に./という接頭辞が付いています。デフォルトのシステム証明書ストアを使用するようにcURLを設定します

しかし、私が取り組んでいるのは、現在のディレクトリにあるものを使用せず、代わりにコンピュータのシステムストアに格納されている証明書を使用することです。

cURLのドキュメントを読むと、指定したデフォルトのca-bundleまたはca-pathを指定せずに設定すると、「設定を自動検出する」ことがわかります。

そしてCURLOPT_CAINFOその

「は、特定の組み込みシステム」に設定されているデフォルトである

だから誰も私を理解するのに役立ちます:

  1. を何もカールとの設定時に指定されていない場合、ありますデフォルトパスはシステムストアを検出しますか?あるいは、システムストアのために独自のパスを使用していますか?

  2. CURLOPT_CAINFOのデフォルト値はcurl_easy_setopt(m_curlHandle, CURLOPT_CAINFO, *<value>)の値にしてください。

私はまだこれがどのように動作しているかを学んでいるので、助けてください。

ありがとうございます。

答えて

3

OpenSSLは、Windowsが独自に持つ「CA証明書ストア」の使用をサポートしていません。カールビルドでその証明書ストアを使用する場合は、カールを再構築してschannelバックエンドを使用する必要があります。これはデフォルトでWindows証明書ストアを使用するWindowsネイティブバージョンです。

OpenSSLを引き続き使用する場合は、PEMファイルまたは特別に細工されたディレクトリにCA証明書を提供する必要があります.Windowsでは、その形式を使用してシステムストアを提供しないため、 Windows証明書ストアをPEM形式に変換する方法を理解してください。

+0

はい、ありがとうございます。後で昨日私はOpenSSLがシステムストアをサポートしていないことを発見し、winsslを使用するためにcURLを構築しました。 SSL/TLSハンドシェイクに問題があり、httpエラー35が発生しました。 schannel.cファイルを読んだ後、schannelがクライアント証明書を送信したくないという問題が発生しました。 (495行参照) –

関連する問題