Xero公共应用程序上的突发证书验证失败

时间:2016-12-07 06:43:08

标签: ruby-on-rails xero-api xeroizer

我们的登台服务器完全正常连接到我们的Xero公共应用程序,直到现在(2016年12月7日)。由于某些奇怪的原因,它现在返回以下错误:

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

以下是我们用于连接Xero的代码段。

@xero_client = Xeroizer::PublicApplication.new(APP_KEY, APP_SECRET, :logger => Logger.new('log/xero.log', 'weekly') request_token = @xero_client.request_token(:oauth_callback => "#{APP_DOMAIN}/oauth/callback")

然后应用程序在此行失败,并抛出上面指定的SSLError

任何人都知道这个的根本原因吗?

详细说明:

  • 我们正在使用Ubuntu 14.04 (Trusty)
  • 我们正在使用Ruby on Rails 4.1.7Ruby 2.1.8p440
  • 我们正在使用Xeroizer 2.16.4 gem
  • 服务器上的SSL似乎没问题,按照第三方网站检查,检查网站中是否正确安装了SSL;
  • 将APP_KEY和APP_SECRET更改为合作伙伴应用程序并将构造函数更改为Xeroizer::PartnerApplication,并添加相关的额外参数(这意味着服务器SSL安装问题)。

2 个答案:

答案 0 :(得分:3)

我们也遇到了这个问题 - 更新到Xeroizer gem版本2.16.5为我们解决了这个问题。

答案 1 :(得分:0)

原来我们必须将ca_file设为nil。

@xero_client.client.consumer_options[:ca_file] = nil

这可能与宝石附带的内置ca-certificates.crt过时这一事实有关。

在我们的服务器中,xeroizer crt文件位于/home/deploy/.bundler/mergethat/ruby/2.1.0/gems/xeroizer-2.16.4/lib/xeroizer/ca-certificates.crt。它将具有不同的路径,具体取决于您的ruby gem / bundler / rvm设置。