簡體   English   中英

Rails / Ubuntu:SSLv3讀取服務器證書B:證書驗證失敗

[英]Rails/Ubuntu: SSLv3 read server certificate B: certificate verify failed

兩天前,我開始在我的應用的生產服務器上看到此錯誤(暫存一切正常)。 我在這里找到了很多關於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 

在SO上,我還發現一種可能的解決方案可能是創建一個初始化程序文件,並在其中放置以下內容:

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

但是,不幸的是,這並沒有解決錯誤。 我還嘗試在生產Ubuntu(14.04)服務器上重新安裝證書

sudo apt-get install openssl ca-certificates

該軟件包已升級,但是不幸的是錯誤仍然存​​在。

有什么提示我該怎么辦才能擺脫錯誤?

編輯:如何或應該在哪里開始調試?

幾天前我也開始收到此錯誤。

刪除geocoder此問題。

在Heroku的支持下,當外部提供商更改其SSL配置時,有時會發生這些錯誤。

回復評論:

日志中沒有特別說明Geocoder的內容,但是我在錯誤報告中(通過異常通知程序gem)看到,應用程序在向Geocoder請求的行上因該錯誤而崩潰。

我還對用戶模型進行了回調,並注意到只要保存/更新用戶,應用程序就會崩潰。

我猜是幸運的。

運行openssl s_client -showcerts -connect server_you_are_connecting_to.com:443並檢查證書。 之后,您將發現自己處於以下情況之一:

  1. 證書有效(具有有效的到期日期和通用名稱),但是由系統不信任的證書頒發機構(CA)簽名。 如果是這種情況,則需要將CA的證書添加到受信任的存儲中,或更新系統上的ca-bundle軟件包。

  2. 證書無效(已過期或通用名稱錯誤)。 如果您不能選擇禁用對等SSL證書驗證,則可以實現自己的證書驗證回調,例如此處所述-在這種情況下,代碼將不依賴於系統的受信任存儲,而是檢查對等服務器使用特定的證書。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM