Rails / Ubuntu:SSLv3读取服务器证书B:证书验证失败

时间:2018-03-07 10:06:08

标签: ruby-on-rails ruby ssl certificate savon

两天前,我开始在我的应用程序的生产服务器上看到此错误(暂存一切正常)。我在SO上发现了很多主题,但没有一个能为我解决这个问题。

这是导致此错误消息的代码段:

sudo apt-get install php7.2-zip

在SO上,我还发现一个可能的解决方案可能是创建一个初始化文件并放在下面:

  @client = Savon.client(wsdl: wsdl_url)
  #@client = Savon.client(wsdl: wsdl_url, ssl_verify_mode: :none) # this sovles the problem, but I don't want to skip the verification 

但不幸的是,这并没有解决错误。我还尝试在生产Ubuntu(14.04)服务器上重新安装证书

require 'open-uri'
require 'net/https'

module Net
  class HTTP
    alias_method :original_use_ssl=, :use_ssl=

    def use_ssl=(flag)
      #self.ca_path = Rails.root.join('lib/ca-bundle.crt').to_s
      self.ssl_version = :TLSv1_2 # added
      self.ca_file = '/etc/ssl/certs/ca-certificates.crt' # the file exists
      self.verify_mode = OpenSSL::SSL::VERIFY_PEER
      self.original_use_ssl = flag
    end
  end
end

软件包已升级,但遗憾的是错误仍在此处。

任何提示我还能做什么并摆脱错误?

编辑:我应该如何或在哪里开始调试?

2 个答案:

答案 0 :(得分:0)

我几天前也开始收到此错误。

删除geocoder解决了问题。

根据Heroku支持,有时在外部提供商更改其SSL配置时会发生这些错误。

回复评论:

日志中没有任何内容专门说地理编码器,但我在我的错误报告中(通过异常通知程序gem)看到应用程序崩溃,出现此错误,在向地理编码器发出请求的行上。

我还对用户模型进行了回调,并注意到应用在用户保存/更新时崩溃。

我想是幸运的猜测。

答案 1 :(得分:0)

运行openssl s_client -showcerts -connect server_you_are_connecting_to.com:443并检查证书。在此之后,您应该发现自己处于以下某种情况:

  1. 证书有效(具有有效的到期日期和公用名),但它由您的系统不信任的证书颁发机构(CA)签名。如果是这种情况,您需要将CA的证书添加到受信任的商店或更新系统上的ca-bundle软件包。

  2. 证书无效(已过期或公用名错误)。如果禁用对等SSL证书验证不是您的选项,那么您可以实施自己的证书验证回调,例如,如here所述 - 在这种情况下,代码不依赖于系统的可信存储,而是检查对等服务器是否使用特定证书。

  3. 希望这有帮助。