我有一個Rails網站(reccr.com)使用omniauth驗證與幾個不同的選項,包括Facebook和Twitter的用戶(使用OAuth)和其他一些(使用OpenID)。不過最近,(我認爲的最後一個星期左右的時間內)試圖通過Twitter進行身份驗證拋出獲得「OpenSSL的讀取服務器證書B:證書驗證失敗」的錯誤,但只爲Twitter的
OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed)
錯誤,但只有Twitter的做它;所有其他服務的身份驗證都很好。我一直在尋找一個解決方案,但我能找到的所有錯誤都解決了所有身份驗證提供程序出現的情況,我無法找到適用於只發生在一個特定提供程序中的情況。
就我所知(而且我是唯一的開發者),本網站沒有任何改變可以預測這一點,我認爲,任何改變網站,這將導致與Twitter的這個問題也會導致與Facebook OAuth身份驗證相同的問題。
關於如何解決這個問題的任何想法?我最初希望問題出在Twitter上,他們會在幾天內解決問題,但這個問題已經過去了大約一週,而且還在進行中,而且我還沒有看到任何其他Twitter特有的關於此錯誤的投訴所以我開始懷疑這畢竟是我。
編輯:好的,在發現THIS和THIS後,我已經到了一半了。我試圖在我的omniauth.rb中添加一個:client_options => {:ca_file => '#{Rails.root}/config/ca-bundle.crt'}
到該行的末尾來實現該解決方案,我將Twitter聲明爲我的提供者之一。但是,當我這樣做時,我得到wrong number of arguments (4 for 3)
錯誤在lib/rack/builder.rb:54:in
initialize'`。任何想法如何修復那?
你從哪裏得到你的證書?編輯:我不好,你是否實際上通過SSL連接,並在回調中拋出此錯誤? –
我不確定。我使用OmniAuth進行身份驗證,因此我爲其處理了很多事情;我應該在哪裏看? – luvcraft
現在忽略,檢查我的答案,看看是否解決了你的問題。 –