【问题标题】:SSl Certificate issue with Omnipay and CIOmnipay 和 CI 的 Ssl 证书问题
【发布时间】:2013-12-11 21:02:36
【问题描述】:

我正在尝试通过我的本地机器上的贝宝沙盒进行简单的付款。我在 Codeigniter 中使用 Omnipay 库。

我在 developer.paypal.com 上设置了一个沙盒帐户和一个测试应用程序。这是我正在使用的代码:

$gateway = GatewayFactory::create('PayPal_Express');
$gateway->setUsername([username]);
$gateway->setPassword([password]);
$gateway->setSignature([signature]);
$gateway->setTestMode(true);

$params = array(
    'amount' => '1.00',
    'currency' => 'USD',
    'description' => 'test purchase',
    'transactionId' => '123',
    'transactionReference' => '123ref',
    'returnUrl' => [returnUrl],
    'cancelUrl' => [cancelUrl],
);

$response = $gateway->purchase($params);

我收到以下错误:

致命错误:未捕获异常 'Buzz\Exception\ClientException' 并显示消息“SSL 证书问题,请验证 CA 证书是否正常。详细信息:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed' in...

我使用带有 BUZZ 的作曲家安装了omnipay。我对在线进行贝宝交易很陌生,不确定是否需要设置本地 ssl 证书。如果我这样做,有人可以指出我的设置方向吗?

谢谢。

【问题讨论】:

    标签: php codeigniter buzz omnipay


    【解决方案1】:

    这听起来很狡猾。 Omnipay 使用Guzzle 向 PayPal 发出 HTTPS 请求,Guzzle 会为您捆绑最新的根 SSL 证书。所以你不应该看到任何 HTTPS 警告。

    这对您在本地有效吗?你试过不同的服务器吗?如果您使用的是共享主机,则您的网络主机可能会尝试代理您的请求,这意味着它们实际上是在执行man in the middle attack,这可能会使您的网站不安全。

    编辑:刚刚注意到错误实际上来自 Buzz,而不是 Guzzle。你是怎么安装的?您的 composer.json 文件是什么样的?您正在运行哪个版本的 Omnipay?如果您升级到最新版本的 Omnipay (2.0),它将在内部使用 Guzzle,这应该可以修复 SSL 错误。

    【讨论】:

    • 我必须安装最新版本的omnipay,并且没有在作曲家文件中正确设置版本。这导致我不得不将 php 更新到较新的版本,但现在似乎一切正常。谢谢。
    【解决方案2】:

    我在omnipay 的问题页面上找到了答案(至少用于测试):https://github.com/omnipay/omnipay/issues/13

    仅用于本地测试:

    将这些行添加到文件 /buzz/lib/Buzz/Client/Curl.php 中,就在 curl_exec 方法之前...

    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);

    【讨论】:

    • 请注意,这违背了 SSL 证书的一个目的:验证您正在与您期望的服务器通信。特别注意不要在生产中使用它,或者知道它有什么影响并处理后果。从本质上讲,禁用 SSL 检查会启用中间人攻击,因此任何人都可以在您发送付款时篡改您的付款。
    猜你喜欢
    • 2014-10-21
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 2017-09-07
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多