Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
213
Help us understand the problem. What is going on with this article?
@shimoju

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

参考

213
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  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
pepabo
「いるだけで成長できる環境」を標榜し、エンジニアが楽しく開発できるWebサービス企業を目指しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
213
Help us understand the problem. What is going on with this article?