從rails控制檯(或通常在rails環境中)運行鍼對SSL站點的get調用時,我得到SSL驗證錯誤。Rails.application.initialize後導致SSL證書驗證失敗
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed
我跟蹤的整個Rails應用程序的初始化過程從開始到結束,從config.ru
一路經過去,需要環境文件等
的SSL錯誤只有我跑Rails.application.initialize!
後開始發生在config/environment.rb
我清除所有紅寶石寶石從制度和只有從Gemfile
安裝的那些所以它不可能有前需要不同的寶石版/初始化過程之後。
我知道短期修復是將我的HTTPS調用設置爲不驗證其獲得的證書,但由於生產環境中存在安全問題,這是不可能的。
這個問題似乎涉及到因爲當我運行
openssl s_client -connect sub.domain.com:443 -showcerts -servername sub.domain.com
獲得正確的CERT SNI(服務器名稱指示),但是當我運行
openssl s_client -connect sub.domain.com:443 -showcerts
我得到一個證書sub2.domain.com
這就是驗證失敗的原因。這是如何被Rails初始化進程改變的,如果有的話,是否有一個選項可以讓rails使用SNI?
- 滑軌v4.2.5.2
- 紅寶石2.3.3p222(2016年11月21日修訂版56859)[x86_64的Linux的]
- OS:Fedora的25
- CA證書-2017年2月11日-1.1.fc25_2017.2.14-1.0.fc25.noarch.drpm:done
SSL。我感到你的痛苦。你看過這個工具:https://github.com/mislav/ssl-tools/blob/8b3dec4/doctor.rb - 我發現它非常有幫助(我與開發者沒有任何關係)。我也發現這個帖子特別有用:http://stackoverflow.com/questions/36966650/ruby-nethttp-responds-with-opensslsslsslerror-certificate-verify-failed/43769753#43769753。祝你好運! – jvillian
謝謝,但不幸的是,這並沒有幫助,因爲這裏的問題是,如果在IRB中運行但是在rails應用程序之後,相同的調用('HTTParty.get('https:// ...')')可以正常工作初始化它會導致此SSL錯誤。 – Killerpixler