[英]Not hacking CurlException: 60 (cURL SSL Certificate Verification)
[英]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並進行測試。
嘗試將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.