![](/img/trans.png)
[英]OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)
[英]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.