如果將CA證書存儲在文件系統(PEM格式)中,則可以告訴curl將其與
sudo curl --cacert /path/to/cacert.pem一起使用。 。
您也可以使用
sudo curl --insecure ...
關閉證書驗證。 編輯:已更新反饋信息
如果要永久設置此設置,則應創建一個 .curlrc
文件並將其放置在主目錄中。 sudo
命令可能需要 / var / root
中的此文件。該文件具有與命令行相同的選項,但沒有破折號。每行一個選項:
cacert = / path / to / my / certs.pem
根不會從當前的用戶信任設置中讀取,但是同時有管理員信任設置和特定於根用戶的信任設置。 (這些也與 system 信任設置不同。)此外,證書信任設置與將證書添加到鑰匙串有些不同。您可以在不完全添加證書的情況下將其標記為受信任的證書。 (這裡的確切情況對我來說還不清楚,而且我所看到的文檔尚不明確。)
您可以將證書標記為當前用戶信任的證書,
$ security add-trusted-cert /path/to/cert.pem
,但這對root沒有幫助。您可能現在猜到了,解決方案是對上面的 sudo
進行標記,然後將其標記為對根用戶特別信任:
$ sudo security add- Trusted-cert /path/to/cert.pem
,或使用 -d
標誌將其添加到管理員信任設置中:
$安全性add-trusted-cert -d /path/to/cert.pem
(OS X會彈出一個密碼對話框來確認這一點。)
後兩者中的任何一個似乎對於 sudo curl
都是足夠的。
如果您使用MacPorts(並且您提到的第3方腳本不會將其從 $ PATH
中刪除或調用 / usr / bin / curl
),則可以安裝 certsync
和 curl
端口按此順序。
certsync
是一個工具和相應的已啟動plist,它將導出您的系統鑰匙串到 $ prefix / etc / openssl / cert.pem
並安裝符號鏈接 $ prefix / share / curl / curl-ca-bundle.crt -> $ prefix / etc / openssl / cert.pem
,因此MacPorts curl將自動獲取證書。更改系統鑰匙串時, certsync
還將自動更新生成的文件。
您要查找的文檔在這裡。它說明瞭如何在Mavericks上使用cURL以及如何提供證書: http://curl.haxx.se/mail/archive-2013-10/0036.html
要使 sudo curl
(在OSX Sierra上)正常工作,我們必須將證書導入到 System.keychain
中並在此信任它。這可以在“鑰匙串”應用中手動完成,也可以使用以下命令完成:
sudo安全性add-trusted-cert -d -k /Library/Keychains/System.keychain /path/to/cert.pem
同時指定 -d
和通過 -k
手動設置系統鑰匙串的路徑很重要,以確保證書確實導入到那裡。還沒有。
該命令無需 sudo
即可運行,但隨後會通過UI對話框詢問密碼,這可能是腳本的障礙。