LoginSignup
214
210

More than 5 years have passed since last update.

Windowsでgem installするとSSLエラーが出る場合の解決策

Last updated at Posted at 2014-12-09

エラー内容

Windowsでgem install(bundle install)すると、

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

というSSLエラーが出て、Gemをインストールできない。

環境

Windows上のRuby 2.1.5(RubyInstaller版)

解決策

Ruby - bundle install がこけるようになった - Qiitaコメントで紹介されている、以下のページの通りにやればOK。

Workaround RubyGems' SSL errors on Ruby for Windows (RubyInstaller)

手順

1. 新しい証明書ファイルをダウンロードする

Step 1: Obtain the new trust certificateから、「AddTrustExternalCARoot-2048.pem」を右クリックし名前を付けて保存でダウンロードする。

.pemという拡張子でなければならないので、きちんとこの拡張子でダウンロードされているか確認する。

2. RubyGemsがあるフォルダに移動する

エクスプローラーを開き、上のパスが表示されているバーをクリックして、

C:\Ruby21\lib\ruby\2.1.0\rubygems

と入力しEnterを押して、RubyGemsがあるフォルダに移動する(Ruby 2.1の場合)。

Ruby 2.1以外や標準のフォルダ以外にインストールしている場合は、

'C:\Ruby21\lib\ruby\2.1.0\rubygems' は見つかりません。

と言われるので、

コマンドプロンプトからgem which rubygemsを実行してRubyGemsの場所を確認し、.rbを抜いたフォルダに移動する

C:\>gem which rubygems
C:/Ruby21/lib/ruby/2.1.0/rubygems.rb

C:/Ruby21/lib/ruby/2.1.0/rubygemsに移動する

(そのままコマンドでstart C:\Ruby21\lib\ruby\2.1.0\rubygemsとすればエクスプローラーが開くらしいが、自分の環境ではうまく動かなかった)

3. ダウンロードした証明書ファイルをコピーする

移動したフォルダにssl_certsフォルダがあるので、ダウンロードした「AddTrustExternalCARoot-2048.pem」をそこにコピーする。

4. 確認

再度gem install(bundle install)を実行し、無事エラーが出なければ成功。

補足:なぜこの不具合が起きているのか

上のサイトにこの不具合の背景も載っていたので、軽く訳した。(英語弱いので超意訳注意)

最近、rubygems.orgで使用するSSL証明書の更新が行われた。これに対応した新しい証明書はRubyGemsの最新バージョンに付属しているが、困ったことにWindowsではこの最新バージョンにバグがある。
そのため、RubyInstallerに付属するRubyGemsが更新できず古いバージョンのままになっており、このSSLエラー問題が起きている。
修正バージョンがリリースされても、それをRubyGems経由でインストールするにはSSL接続が必要なので不可能、という鶏卵問題になってしまっている。

なので、WindowsでのRubyGemsのバグが修正され、さらにRubyInstallerに付属するRubyGemsが最新バージョンに更新されれば、この問題は解決すると思われる。
それまでは上の手順を行って凌ぐ必要がある。

参考

214
210
10

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
214
210