簡體   English   中英

cURL SSL 請求失敗

[英]cURL SSL request fails

我正在嘗試使用 Liveperson REST API,我使用以下 php 代碼:

$authorization = "LivePerson appKey=MY_APP_KEY";
$accept = "application/xml";
$contentType = "application/xml";


$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "C:/dev/wamp/exported.crt");

curl_setopt($ch, CURLOPT_URL, "https://dev.liveperson.net/api/account/1234?v=1");
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Authorization: '.$authorization,'Accept: '.$accept,'Content-Type: '.$contentType));
curl_exec($ch);
$response = curl_getinfo( $ch );
var_export($response);
curl_close($ch);

請求失敗,我已經嘗試了以下

  • 在 php.ini 上啟用 openssl
  • 從 liveperson 服務器導出證書並在我的代碼中使用它
  • 按照此處的說明進行操作

任何幫助將不勝感激!

嘗試從代碼的第 9 行中刪除getcwd() 您使用的是相對於您當前工作目錄的完整路徑“C:/dev/wamp/exported.crt”,這是錯誤的。 :)

希望這能解決它

從您的請求中刪除 CA 證書:

# curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "C:/dev/wamp/exported.crt");

實際上,您必須在此處定義證書頒發機構的公鑰/證書文件(在您的情況下為 VeriSign)。 Liveperson的證書肯定是錯誤的。

檢查證書是否對您的問題負責:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

此設置當然不適合您的項目,但它可能有助於識別問題。 如果認證過程以某種方式負責,您應該成功連接到 Liveperson 的 API 主機。

如果認證過程確實負責嘗試下載[VeriSign的公共根證書]並將其用作CAINFO:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_CAINFO, "C:/dev/wamp/verisign_root.crt");

暫無
暫無

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

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