Dre*_*ell 8 php ssl curl paypal
由于最近在SSLv3中发现了漏洞,许多Web服务提供商(即PayPal,Facebook,Google)正在禁用该漏洞并希望我们使用TLS.我在弄清楚如何做到这一点时遇到了一些麻烦.
我目前正在使用以下函数来处理我的cURL请求.
function CURLRequest($Request = "", $APIName = "", $APIOperation = "", $PrintHeaders = false)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_URL, $this->EndPointURL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $Request);
if($this->APIMode == 'Certificate')
{
curl_setopt($curl, CURLOPT_SSLCERT, $this->PathToCertKeyPEM);
}
$Response = curl_exec($curl);
/*
* If a cURL error occurs, output it for review.
*/
if($this->Sandbox)
{
if(curl_error($curl))
{
echo curl_error($curl).'<br /><br />';
}
}
curl_close($curl);
return $Response;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试点击PayPal的沙箱时,他们已经禁用了这个,我最终得到了一个cURL错误: 错误:14077410:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报握手失败
我发现的信息是我只需要改变它来使用TLS而不是SSL,而我见过的其他答案只是通过在我的函数中添加一个curl选项来做到这一点......
curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
Run Code Online (Sandbox Code Playgroud)
我已经添加了这个选项,但我仍然得到完全相同的结果.任何有关如何使这项工作的信息将不胜感激.谢谢!
复制自:SSL 错误无法更改为 TLS
尝试添加curl_setopt($curl, CURLOPT_SSL_CIPHER_LIST, 'TLSv1');
到您的代码中。
如果您的 cURL基于OpenSSL libssl而不是基于nss,这将起作用。