Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

エラー内容

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が最新バージョンに更新されれば、この問題は解決すると思われる。
それまでは上の手順を行って凌ぐ必要がある。

参考

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away