2015-12-29 119 views
4

嘗試讀取流時有一個問題:PHP驗證失敗與LetsEncrypt

$result = file_get_contents($url, false, stream_context_create(
    ['http' => ['timeout' => (float) $this->options['timeout']]] 
)); 

SSL operation failed with code 1. OpenSSL Error messages:

error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

在任何人回答我不會做

"ssl"=>array(
     "verify_peer"=>false, 
     "verify_peer_name"=>false, 
    ), 

我希望其他人使用letsencrypt並有一些確保其驗證的正確方法。

隨時檢查我的域名lukepolo.com

回答

3

openssl.cafile = curl.cainfo =

你的代碼,你既需要

+0

嗯。如果一個人不知道這些選項的有意義的價值,那也沒用。 –

+0

你需要設置你的ca文件的路徑 – LukePOLO

+1

我完全意識到這一點。但是我指出哪個證書? –

1

你可能不得不安裝CA證書(this page has links to download the CA file)我的證書。您可能需要嘗試各種簽名才能使其正常工作。獲得PEM版本,並將其保存到服務器,然後在你的php.ini改變,像這樣

$result = file_get_contents($url, false, stream_context_create(
    [ 
     'http' => ['timeout' => (float) $this->options['timeout']], 
     'ssl' => ['cafile' => '/path/to/file.pem'] 
    ] 
)); 
+0

林假設我只是使用ISRG Root X1 pem文件,因爲其他文件只是中間文件。 我試過了,但似乎仍然失敗。我想以某種方式將它們結合起來? – LukePOLO

+0

不,你想要中間體。您的問題是,服務器無法獲得鏈來驗證證書。所以你需要CA或證書頒發機構 – Machavity

+0

Gotcha,耶試圖鏈接他們,仍然是同樣的問題。不知道爲什麼這麼痛苦 – LukePOLO