2012-05-01 145 views
1

我試圖與Liveperson REST API的工作,我用下面的PHP代碼:捲曲SSL請求失敗

$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); 

請求失敗,我已經試過以下

  • enabeling上的OpenSSL php.ini
  • 從liveperson服務器導出證書並在我的代碼中使用它
  • 跟隨指令here

任何幫助將不勝感激!

+1

什麼部分請求的失敗?你會得到什麼錯誤? – Sietse

+1

這行「curl_setopt($ ch,CURLOPT_CAINFO,getcwd()。」C:/dev/wamp/exported.crt「);」似乎有點粗略。 – ethrbunny

回答

1

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

希望這會解決它

+0

謝謝....複製/粘貼問題;) –

0

從您的要求刪除CA證書:

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

其實你要在這裏定義的證書頒發機構的公鑰/證書文件(這是你的情況威瑞信)。 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");