PayPal IPN:无法获取本地发行者证书

Posted

技术标签:

【中文标题】PayPal IPN:无法获取本地发行者证书【英文标题】:PayPal IPN: unable to get local issuer certificate 【发布时间】:2013-02-03 19:09:58 【问题描述】:

我正在使用 curl 验证 PayPal IPN,但它会引发错误:SSL certificate problem: unable to get local issuer certificate。相同的代码在开发服务器上运行,当我移动到客户端服务器时它不起作用。

我是否需要购买 ssl 认证才能通过 PayPal 快速结账或对我的编码部分进行任何更改或需要在服务器上进行任何设置进行付款。Curl 已在服务器上启用。任何帮助将不胜感激。

我的代码如下,它是一个简化的测试页面:

$req = HAVING PARAMETERS FROM PAYPAL;

$ch = curl_init("https://www.sandbox.paypal.com/cgi-bin/webscr");
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));

curl_exec($ch);
if(curl_errno($ch))

    echo 'Curl error: ' . curl_error($ch);

【问题讨论】:

Paypal Access - SSL certificate: unable to get local issuer certificate 的可能重复项 【参考方案1】:

您告诉 cURL 验证 SSL 连接,但您没有告诉它要验证什么;

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

通过添加以下内容,确保指向要信任的 CA 的最新列表:

curl_setopt($ch, CURLOPT_CAPATH, "./cacert.pem");

如果您自己没有最新的 cacert 列表,我建议您下载 cURL 维护者提供的列表:cacert.pem。

【讨论】:

【参考方案2】:

您想要CURLOPT_CAINFO(指向PEM 文件)而不是CURLOPT_CAPATH(指向包含PEM 文件的目录)。

curl_setopt($ch, CURLOPT_CAINFO, "./cacert.pem");

【讨论】:

以上是关于PayPal IPN:无法获取本地发行者证书的主要内容,如果未能解决你的问题,请参考以下文章

Paypal Access - SSL 证书:无法获取本地颁发者证书

Paypal Access - SSL 证书:无法获取本地颁发者证书

Paypal Access - SSL 证书:无法获取本地颁发者证书

AWS S3-错误:无法获取本地发行者证书

PayPal IPN 是不是需要 SSL 证书?

PayPal IPN 侦听器 - SSL 证书握手失败