簡體   English   中英

CurlException:[curl] 51:SSL:證書驗證失敗

[英]CurlException: [curl] 51: SSL: certificate verification failed

無法弄清楚可能是什么:

在我的本地環境中,在我將OSX更新到最后一個版本的Yosemite后,我收到此錯誤:

CurlException: [curl] 51: SSL: certificate verification failed (result: 5) [url] 

我正在使用Symfony2,所以它與PHP有關。 我試圖重新安裝openssl但沒有任何反應。

有什么建議嗎?

查看證書鏈中的任何域名都會給您出現此錯誤。 對我來說這是googleapis.com

openssl s_client -host www.googleapis.com -port 443

你會得到這樣的東西:

CONNECTED(00000005)
depth=1 C = US, O = Google Trust Services, CN = Google Internet Authority G3
verify error:num=20:unable to get local issuer certificate
---
Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=*.googleapis.com
   i:/C=US/O=Google Trust Services/CN=Google Internet Authority G3
 1 s:/C=US/O=Google Trust Services/CN=Google Internet Authority G3
   i:/OU=GlobalSign Root CA - R2/O=GlobalSign/CN=GlobalSign

注意:我在修復問題后捕獲了這個。 此外,您的鏈輸出將看起來不同。

然后你需要查看在apache下運行的php中允許的證書。 在頁面中運行phpinfo()。

<?php echo phpinfo();

然后通過在頁面中搜索openssl.cafile來查找從頁面輸出加載的證書文件:

openssl.cafile openssl.cafile /usr/local/php5/ssl/certs/cacert.pem

這是您需要通過向其添加正確的證書來修復的文件。

sudo nano /usr/local/php5/ssl/certs/cacert.pem

您基本上需要將正確的證書“簽名”附加到此文件的末尾。

你可以在這里找到一些:

它們看起來像這樣:

示例證書圖像

注意:這是一個圖像,所以人們不會簡單地從stackoverflow復制/粘貼證書

如果您需要將.crt轉換為pem,則需要執行以下操作:

openssl x509 -inform DER -outform PEM -in GIAG2.crt -out GIA2.pem

一旦正確的證書在此文件中,請重新啟動apache並進行測試。

修復此問題的方法是取消設置SSL_CERT_FILE的值

運行命令:

export SSL_CERT_FILE=""

然后嘗試執行所需的操作,它將正常工作。

參考: Mac上的卷曲'證書驗證失敗'

嘗試將curl從7.37.1(beta2附帶)降級到7.37.0

添加這些選項以忽略ceritificate:

curl_setopt($ ch,CURLOPT_SSL_VERIFYHOST,0); curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,0);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM