我们的登台服务器完全正常连接到我们的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.7
,Ruby 2.1.8p440
Xeroizer 2.16.4
gem Xeroizer::PartnerApplication
,并添加相关的额外参数(这意味着服务器SSL安装不问题)。 答案 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设置。