[英]SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
[英]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
並檢查證書。 之后,您將發現自己處於以下情況之一:
證書有效(具有有效的到期日期和通用名稱),但是由系統不信任的證書頒發機構(CA)簽名。 如果是這種情況,則需要將CA的證書添加到受信任的存儲中,或更新系統上的ca-bundle軟件包。
證書無效(已過期或通用名稱錯誤)。 如果您不能選擇禁用對等SSL證書驗證,則可以實現自己的證書驗證回調,例如此處所述-在這種情況下,代碼將不依賴於系統的受信任存儲,而是檢查對等服務器使用特定的證書。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.