windows下 Ruby使用國內https源時出現的ssl報錯的解決辦法

MahaSthana發表於2017-01-09

雖然不建議在windows環境下構建ruby,但是rubyinstaller必然有它存在的意義。在使用ruby時,最令人頭疼的無疑是官方源被牆的問題,令人欣慰的是,Ruby-china的出現,為我們提供了免費實時的ruby源,在此對Ruby-china提出萬分的感謝。

我們可以用https://gems.ruby-china.org/ 來替換官方的ruby源,命令如下圖所示:

但是在windows下使用ruby-china源的時候,會出現如下錯誤:

Ruby-china給出的解決方案是,使用http://協議替換https://即可解決問題。

但是,這並不是最好的解決辦法,我也是被這個問題困擾了一段時間,於是決定找出解決方案並分享給大家。在網上可以見到的最常用的辦法是下載cacert.pem (https://curl.haxx.se/ca/cacert.pem),放到指定資料夾(自己決定,並無強制要求),並在環境變數中新增變數SSL_CERT_FILE並將其值指定到cacert.pem檔案。這種方式確實可以解決問題,但是好多評論回覆此方式無效,其中原因有兩個:

1.下載到cacert.pem檔案到本地後,cacert.pem被系統鎖定,需要檢視其屬性進行解鎖,有點類似於chm檔案的解鎖。

2.通過Ctrl+s儲存方式下載cacert.pem到本地後,瀏覽器在其內容首位自動新增了一些HTML內容,導致pem檔案解析錯誤,把這些內容去掉即可解決問題,如下圖:

除了在環境變數中新增變數這種方式以外,還有一種更簡便的方法,同樣,下載cacert.pem檔案,在C:\Ruby23\lib\ruby\site_ruby\2.3.0\rubygems\ssl_certs\中建立新的資料夾並命名為“gems.ruby-china.org”,最後把cacert.pem檔案放入到該資料夾下,問題即可得到解決:

相關解答地址https://github.com/ruby-china/rubygems-mirror/issues/5


本文中對相關問題的解決辦法均採集於網路,如有侵權請告知:chunjuwang@163.com;

未經本人允許,謝絕轉載。


相關文章