HTTPS 連接失敗的問題及其解決方法
在使用cURL 連接到HTTPS 網站時,遇到了一個常見問題:cURL 僅傳回0 長度的內容,只有在將cURL 設定為回傳標頭後才有效。這個問題很可能是由於 HTTPS 連線引起的。
這個問題的解決方法是更新 cURL 附帶的用於驗證 HTTPS 憑證的驗證檔案的版本。可以從 http://curl.haxx.se/ca/cacert.pem 下載最新的身份驗證檔。將其保存到網站上的某個目錄中,然後在每次請求中添加:
curl_setopt ($curl_ch, CURLOPT_CAINFO, dirname(__FILE__)."/cacert.pem");
需要注意的是,在解決方案中不要禁用CURLOPT_VERIFYPEER 和CURLOPT_VERIFYHOST,因為這會降低程式碼的安全性。
一個更好的解決方法是使用Jasen 提出的方法,如下所示:
在php.ini 中加入:
curl.cainfo=/etc/ssl/certs/ca-certificates.crt
此外,還可以使用composer 套件Paragonie/Certainty 來管理CA 證書,從而避免因撤銷證書而導致cacert.pem 過期帶來的安全漏洞。
以上是為什麼我的 cURL HTTPS 連線返回空內容,如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!