2017-01-20 59 views
0

我需要打開由私人公司的證書頒發機構簽名的遠程資源。目前,PHP不會打開資源,因爲它不信任證書籤名者。如何將證書頒發機構添加到PHP,以便file()函數信任由它簽名的證書?

我知道你可以使用流上下文對象執行證書,但是我正在尋找一種方法來給PHP一個新的證書頒發機構的公鑰,並讓file()和類似方法信任由該機構簽署的遠程證書,而不必每次創建流上下文

有沒有辦法給php.ini添加一個新的證書頒發機構?我試圖將CA的公鑰添加到/etc/ssl/certs/,但似乎並未得到承認。

回答

0

Curl使用一個包含所有CA的文件。要爲Curl/PHP添加新的CA,您需要獲得完整的包,將您的證書添加到包中,然後告訴PHP使用自定義包。

  1. 沒有捲曲下載最新的包,並將其保存到/etc/ssl/certs/cacert.pem

curl --remote-name --time-cond cacert.pem https://curl.haxx.se/ca/cacert.pem

  • 編輯/etc/ssl/certs/cacert.pem文件,並添加新的CA公鑰關鍵的底部。

  • 編輯php.ini並將行openssl.cafile=/etc/ssl/certs/cacert.pem添加到頂部(或底部)。

  • 重新啓動網絡服務器。

  • 相關問題