连接到Paypal时,OpenSSL :: SSL :: SSLError(SSL_connect返回= 1 errno = 0状态= SSLv3读取服务器证书B:证书验证失败)

时间:2015-10-27 04:26:36

标签: ruby ssl paypal openssl ssl-certificate

我知道有很多关于这个错误的讨论但很遗憾地说我无法在那里找到任何可行的解决方案。

我正在使用ShareTribe开发一个电子商务网站。我正在尝试将Paypal实现为支付网关。所以我正在使用Activemerchant

在开发机器上一切正常但是当我将rails应用程序部署到生产时它会抛出

  

OpenSSL :: SSL :: SSLError(SSL_connect返回= 1 errno = 0状态= SSLv3读取服务器证书B:证书验证失败)

我正在将我的Activemerchant初始化为

NullPointerException

添加了HTTPS并禁用了SSLV3

经过大量的谷歌搜索后,我发现了

  

SSLv3被证明对POODLE漏洞不安全。您   应确保您的系统具有最新版本的OpenSSL   你可以使用TLSv1.2。

所以我禁用了SSLV3,如下所示

 config.after_initialize do
    ActiveMerchant::Billing::Base.mode = :test
    paypal_options = {
        login: "bla bla",
        password: "bla bla",
        signature: "bla bla",
        appid: "APP-80W284485P519543T"
    }
    ::EXPRESS_GATEWAY = ActiveMerchant::Billing::PaypalExpressGateway.new(paypal_options)

  end

但是在重新启动nginx之后我遇到了同样的问题。有没有办法解决这个问题。 任何建议将不胜感激。

2 个答案:

答案 0 :(得分:2)

这很可能是由于升级到SHA256认证。请查看以下文档:

https://devblog.paypal.com/paypal-ssl-certificate-changes/

答案 1 :(得分:2)

主要原因是rvm安装的ruby会查找错误的目录以获取证书,而OSX-ruby会查找正确的目录。

你想做的不是使用任何预编译的红宝石,而是在本地机器上编译ruby,如下所示:

rvm install 2.2.0 --disable-binary

您可以阅读详细解释https://toadle.me/2015/04/16/fixing-failing-ssl-verification-with-rvm.html