2017-10-05 109 views
1

我得到了經典的php curl錯誤「無法獲得本地發行者證書」。 下面是來自卷邊調試一些更多的信息:PHP-curl無法獲得本地發行者證書

試圖133.7.42.21 ...

TCP_NODELAY設置

連接到example.adress.com(133.7.42.21)端口443(# 0)

  • ALPN,提供HTTP/1.1
  • 密碼的選擇:ALL:EXPORT:EXPORT40:EXPORT56:A零位:!LOW:RC4:@STRENGTH
  • 成功設置證書驗證地點:
  • 憑證檔案錯誤:C:\ some_absolute_path \ cacert.pem
  • CApath:無
  • SSL證書問題:無法獲取本地頒發者證書

    Curl_http_done:稱爲早產== 1 \ N *期末連接0 \ n

正如你可以看到我試圖用「CACE rt.pem「文件從Mozilla. 我嘗試了所有這些但他們都沒有工作。

PHP代碼:

 $curl = curl_init($location); 
     //set verifier from interface host 
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 1); 
     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); 

     //set host global certificate 
     curl_setopt($curl, CURLOPT_CAINFO, $globla_cert); 

     //set certificate 
     curl_setopt($curl, CURLOPT_SSLCERT, $ssl_cert); 
     //set private key 
     curl_setopt($curl, CURLOPT_SSLKEY, $ssl_cert_key); 
     //set private key password 
     curl_setopt($curl, CURLOPT_SSLKEYPASSWD, $ssl_cert_password); 

     //set curl debug output 
     curl_setopt($curl, CURLOPT_VERBOSE, true); 
     $verbose = fopen('php://temp', 'w+'); 
     curl_setopt($curl, CURLOPT_STDERR, $verbose); 
     //curl_setopt($curl, CURLINFO_HEADER_OUT, true); 
     //set ssl version 
     curl_setopt($curl, CURLOPT_SSLVERSION, 6); 


     curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); 
     curl_setopt($curl, CURLOPT_POST, TRUE); 
     curl_setopt($curl, CURLOPT_POSTFIELDS, $request); 
     curl_setopt($curl, CURLOPT_HEADER, FALSE); 
     curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: text/xml")); 
     curl_setopt($curl, CURLOPT_TIMEOUT, $timeout); 
     curl_setopt($curl, CURLOPT_CONNECTTIMEOUT_MS, $connecttimeout); 
     $response = curl_exec($curl); 

它將沒有全局證書工作時,我禁用CURLOPT_SSL_VERIFYPEERCURLOPT_SSL_VERIFYHOST但這是一個NOGO

我目前使用XAMPP的PHP版本7.0。 15。 Apache已啓用mod_ssl。 PHP具有openssl並啓用了curl擴展。

的事情,我嘗試:

  • 設置在php.ini裏的路徑:

    openssl.cainfo= "C:\some_absolute_path\cacert.pem" openssl.cafile= "C:\some_absolute_path\cacert.pem"

  • 扔在我與var_dump(openssl_get_cert_locations()); 這是得到了默認路徑證書「C:\ openssl-1.0.2j-win32 \ ssl」對我來說。

  • 扔在證書「C:\ XAMPP \ PHP」

現在我不覺得了。「修復」,我可以試一下,有一個人的想法可能是什麼?

+0

嘗試這個https://seegatesite.com/the-steps-how-to-install-openssl-on-xampp-windows/並重新啓動apache後,您完成 – Thamaraiselvam

+0

這不給我只是有機會使用HTTPS與本地主機?順便說一句,它沒有工作,但謝謝你的答覆:( – MrWook

回答

0

問題已解決。

這不是一個技術問題。我收到的服務證書已無效,並且新證書不在舊版的Mozilla中的「cacert.pem」中。

相關問題