2016-05-31 39 views
3

我有一個命令行應用程序正在使用libcurl-4 dll's,目前我可以通過將我的CA證書放入我的工作目錄並將其名稱傳遞給CUTLOPT_CAINFOCURLOPT_SSLCERT./前綴到他們的名字。配置cURL使用默認系統證書存儲

但是,我的工作是讓cURL不使用當前目錄中的內容,而是使用存儲在我的計算機系統存儲中的證書。

從閱讀cURL的文檔我明白,如果您配置它沒有給出指定的默認ca-bundleca-path ti將「自動檢測設置」。

而且該CURLOPT_CAINFO是默認設置爲「特定的內置系統」

因此,誰能幫助我瞭解:

  1. 如果在配置時,捲曲沒有指定,是它檢測系統存儲的默認路徑?或者捲曲使用自己的系統商店路徑?

  2. 你給curl_easy_setopt(m_curlHandle, CURLOPT_CAINFO, *<value>)做什麼值使CURLOPT_CAINFO去使用它的默認值?

任何幫助表示讚賞,因爲我仍然在學習這一切如何工作。

謝謝。

回答

3

OpenSSL不支持使用Windows擁有的「CA證書存儲」。如果您希望curl構建使用該證書存儲,則需要重新構建curl以使用schannel後端,這是默認情況下也使用Windows證書存儲的Windows本機版本。

如果您決定繼續使用OpenSSL,您必須簡單地在PEM文件或特製目錄中提供CA證書,因爲Windows不提供使用該格式的系統存儲,您必須從某處獲得合適的存儲或者想出如何將Windows證書存儲轉換爲PEM格式。

+0

是的,謝謝你的幫助。昨天晚些時候,我發現OpenSSL不支持系統商店,並且自建立cURL以使用winssl。 但是,我現在有SSL/TLS握手和接收http錯誤35問題。 通過閱讀schannel.c文件後,我偶然發現我認爲是schannel不想發送客戶端證書的問題。 (見行495) –