2013-12-08 202 views
10

我試圖連接到使用SSL的本地主機上的應用程序。我正在使用Mac OS X Mavericks。我正的錯誤是以下幾點:SSL證書 - OS X Mavericks

Error sending cURL get request to https://dev.site.com:5555/version 
Error code: 60 Error msg: SSL certificate problem: Invalid certificate chain 

我試圖證書添加到鏈:

/usr/bin/security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" /etc/path/ca_key.pem 

仍然得到同樣的錯誤。

回答

5

--cacert--cert在OSX Mavericks中被打破。

你可以閱讀更多關於它在這裏:https://groups.google.com/forum/#!topic/munki-dev/oX2xUnoQEi4

的解決辦法是在這裏:http://curl.haxx.se/mail/archive-2013-10/0036.html表明您需要導入證書作爲信任系統證書:

證書導入系統(「系統」)或用戶(「登錄」)鑰匙串使用鑰匙串訪問並將其標記爲始終信任SSL和X.509基本策略。

+1

儘管Safari在沒有任何問題的情況下識別[我的證書](https://sbarnea.com),但curl仍然不起作用。您是否知道可用於自動導入過程的命令行方法(Safari不允許我將證書保存在KeyChain中) – sorin

+0

Safari不允許您導入它,但您應該能夠將其直接導入到系統KeyChain。 – brandonscript

2

有兩件事情可以做:

(1)轉換的.pem證書的.p12:

openssl pkcs12 -export -out my_certificate.p12 -inkey my_certificate.pem -in my_certificate.pem` 

,並與捲曲與使用它的PASSWORD你選擇轉換時:

curl --cert my_certificate.p12:PASSWORD. 

(2).pem文件拖動到您的鑰匙串,打開infopane,將其設置爲「始終信任」爲SSL和X.509,並注意COMMON-NAME。 (證書名稱)

curl --cert COMMON-NAME 

與捲曲7.35.0

22

爲我工作都在OSX 10.9在某些情況下會更好,如果你在Mac上的代碼開發Linux或使用標準的捲曲(如* BSD)。在這種情況下,你可以做這樣的:

  1. 安裝Homebrew

  2. 安裝捲曲標準證書的支持(不超過鑰匙扣證書)。從http://curl.haxx.se/ca/cacert.pem

    brew install curl --with-openssl && brew link curl --force

  3. 安裝根CA證書到/usr/local/etc/openssl/certs/cacert.pem

  4. 添加到您的〜/ .bash_profile中

    export CURL_CA_BUNDLE=/usr/local/etc/openssl/certs/cacert.pem

  5. 經過4個步驟後,您可以使用curl與來自文件的證書而不是Keychain 。

+0

我不得不創建文件夾/ usr/local/etc/openssl/certs,tnks! – RckLN

+1

-force必須用--force替換 –

+0

步驟3和4做了什麼?即使沒有他們,我的MAC捲曲也能奏效。 –