2011-09-16 60 views
8

我的代碼正試圖訪問HTTPS服務器,並且它有自己的證書。例如,IP是「10.0.1.101」。如何在Mac Keychain中使用libcurl查看證書

如果我瀏覽Safari並訪問「http://10.0.1.101」,一切都OK。我爲這個URL做了一個簡單的curl_easy_perform(),並且可以從HTTP URL中獲取數據。涼。

然後我嘗試訪問「https://10.0.1.101」(是,HTTPS),並從Safari中接受證書並給它一個「信任」選項,之後,Safari訪問HTTPS URL爲好。

因此,證書已被添加到Mac鑰匙串,但是當我在HTTPS URL上嘗試curl_easy_perform()時,它仍然返回CURLE_SSL_CACERT。 libcurl無法使用已知的CA證書對HTTPS證書進行身份驗證。

libcurl的證書檢查和Mac Keychain之間缺失的鏈接是什麼?甚至有鏈接嗎?是否有可能讓libcurl查看證書的Mac Keychain?如果是這樣,怎麼樣?

+0

我們可以使用CURLOPT_CAINFO選項指向鑰匙串文件嗎? – radj

+1

在終端有一個'security'命令,我想你可以使用該命令的輸出來獲得信任鏈。 (我不是一個證書或終端專家,在腳本中試過,它可以用捲曲工作) –

+0

@Marcelo Alves,謝謝。它看起來是一個很好的起點,但是如果可以的話,你會分享你如何做到的步驟嗎? – radj

回答

2

沒有。構建爲使用OpenSSL的libcurl只會從單個PEM文件或已準備好OpenSSL樣式的CA證書目錄讀取CA證書。

對於實現的Mac Keychain沒有什麼特別的魔力。

+2

真的嗎?那麼,這是*怪異*。我的機器運行Mountain Lion「正常工作」並認可證書正常,但運行Yosemite的機器是* no go *。 – Michael

相關問題