【Windows】gem updateでSSL_connect returnedエラーが起こる

  • 11
    いいね
  • 2
    コメント
この記事は最終更新日から1年以上が経過しています。

WindowsにSCSSのビルド環境を作るために、rubyコマンドの実行環境を作りましたが、最新版rubyインストーラー(2014.12.30 時点)でちょっと苦労したことがありました。

Windows版 rubyインストーラーを「 http://rubyinstaller.org/downloads/ 」からダウンロードして、rubyコマンドを実行できるところまで環境を作ったが、その後の「gem update --system」コマンドのところでSSLエラーが表示されてしまいました。

Windows版 rubyインストーラー

今回使用したインストーラーはこれです。
rubyinstaller-2.1.5-x64.exe

問題のSSLエラーメッセージ

こんなSSLエラーが表示されました。

gem update --system
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)

原因を調べてみたら、インストーラーに含まれているSSL証明書が古いことが原因らしいです。
参考ページ) https://gist.github.com/luislavena/f064211759ee0f806c88

しかしこれ、インストーラーをビルドするときにチェックしなかったんでしょうかね。

SSLエラーを解消して、gemを最新版にする方法

とりあえず、参考ページに書いてあることを実践して、SSLエラーを解消します。

gem --version
> 2.2.2
gem which rubygems
> C:/Apps/ruby/lib/ruby/site_ruby/2.1.0/rubygems.rb
cd C:\Apps\ruby\lib\ruby\gems\2.1.0

ここから修正版RubyGemsファイルを取得する。
https://github.com/rubygems/rubygems/releases/tag/v2.2.3
緑色の[rubygems-update-2.2.3.gem]ボタンを押してダウンロードする。

そしたら下のパスへ保存する。
C:\Apps\ruby\lib\ruby\gems\2.1.0\rubygems-update-2.2.3.gem

gem install --local rubygems-update-2.2.3.gem
gem --version
> 2.2.3
update_rubygems --no-ri --no-rdoc
gem uninstall rubygems-update -x
gem which rubygems
> C:/Apps/ruby/lib/ruby/site_ruby/2.1.0/rubygems.rb
start C:/Apps/ruby/lib/ruby/site_ruby/2.1.0/rubygems.rb

以下パスのpemファイルをダウンロードする。
https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem
保存先はこちら。(自分の場合は、ssl_certsフォルダが無かったので作りました)
C:\Apps\ruby\lib\ruby\gems\2.1.0\gems\ssl_certs\AddTrustExternalCARoot-2048.pem

gem update --system

そうすると、Updating rubygems-update と表示されて無事にアップデートが始まります。

gem --version
>2.4.5

以上、無事にgemを最新版にアップデートできました。