perl - Paypal IPN : unable to get local issuer certificate

标签 perl ssl curl paypal

我正在使用 curl 验证 PayPal IPN,但它抛出错误:SSL 证书问题:无法获取本地颁发者证书。相同的代码在开发服务器上运行,当我移至客户端服务器时它无法运行。

我是否需要购买 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);
}

最佳答案

您告诉 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 .

关于perl - Paypal IPN : unable to get local issuer certificate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14951802/

相关文章:

mysql - 抛出“不是数组引用”错误

java - Firefox 错误 : "Your connection is not secure" while launching driver with Selenium 3. 0.1 使用 Java

php - 如何让 PHP 连接到仅限 TLSv1.2 的站点

ssl - 哪些 TLS/SSL 密码套件被认为是弱/强?

ssl - 如何通过 SSL 连接使用 Alembic?

php - 多线程 Curl 无法处理大量并发 URL?

php curl vs cli curl,发布 xml

perl - 如何强制逻辑或运算符的列表上下文

perl - 在 Perl 中使用 "sort"作为 utf8 字符串

arrays - 在 Perl 中,如何制作数组的深层复制?