2015-11-12 958 views
2

我在Heroku上託管了Rails API服務器,它向初始API請求中指定的回調URL發出異步POST請求由客戶。OpenSSL :: SSL :: SSLError:SSL_connect返回= 1 errno = 0狀態=錯誤:證書驗證失敗

我嘗試通過SSL將其發佈到我的客戶的一個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配置上?如果是的話,我如何協助他們調試問題?

UPDATE:

我可以捲曲POST到客戶端的web應用程序沒有問題,只有當我這樣做是通過Ruby的HTTP庫失敗

非常感謝 感謝

回答

2

我的猜測是,有是您客戶的Web應用程序的SSL證書問題。也許有一個過期或無效的證書。你可以試試this answer

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

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

我想,和它的作品,但它顯然不適合生產環境 – Tarlen

+0

該測試顯示你缺少你的CA-certificates.crt文件的中間或根證書。你還需要一個答案嗎? –

相關問題