簡體   English   中英

OpenSSL::SSL::SSLError: SSL_connect 返回=1 errno=0 state=error: 證書驗證失敗

[英]OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed

我在 Heroku 上托管了 Rails API 服務器,它向客戶端初始 API 請求中指定的回調 url 發出異步 POST 請求。

當我嘗試通過 SSL POST 到我的客戶之一的 web 應用程序時遇到問題。

connection = Faraday::Connection.new('https://subdomain.some_client.com', ssl: { ca_file: '/usr/lib/ssl/certs/ca-certificates.crt' })
connection.get '/test'

以下拋出錯誤:

Faraday::Error::ConnectionFailed: SSL_connect returned=1 errno=0 state=error: certificate verify failed

但是,如果我通過 HTTPS 發布到另一台服務器,例如谷歌,它工作正常

connection = Faraday::Connection.new('https://www.google.com', ssl: { ca_file: '/usr/lib/ssl/certs/ca-certificates.crt' })
connection.get '/'

這是否意味着問題出在客戶端的 SSL 配置上? 如果是這樣,我如何幫助他們調試問題?

更新:

我可以毫無問題地將 POST 卷曲到客戶端的 web 應用程序,只有當我通過 ruby​​ 的 HTTP 庫執行它時才會失敗

非常感謝謝謝

我的猜測是您客戶端的 Web 應用程序的 SSL 證書存在問題。 也許有一個過期或無效的證書。 你可以試試這個答案

如果你需要解決這個問題(但可能不是一個好的永久解決方案,因為潛在的安全漏洞)你應該能夠通過將它放在你的 application.rb 中的 Bundler.require 之前來關閉證書驗證:

require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

暫無
暫無

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

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