現象
最近、Windows環境でgemを使うとこんなエラーが出るようになった。
C:\>gem install capybara
ERROR: Could not find a valid gem 'capybara' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect retur
ned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (
https://api.rubygems.org/specs.4.8.gz)
SSL証明書の検証に失敗しました、というHTTPS通信のエラー。
環境
- Windows 7 or 10 どちらでも発生を確認。
- インストールはRubyInstallerを使用。Ruby 2.3.1
- 発生時点でのgemは2.5.1
解決方法
Rubygemsを最新バージョンにする。
アップデートはgemで取れるが、上で示した通りhttpsは通らないので、httpを指定して取る。
C:\>gem -v
2.5.1
C:\>gem install rubygems-update --source http://rubygems.org/
# 出力省略
C:\>update_rubygems
# 出力省略
C:\>gem -v
2.6.7
この状態でgem installすると通った。
補足:証明書について
https://rubygems.org の証明書を見てみると、有効期間が2016/09/28からだった。最近更新されたっぽいので、これが原因だった可能性が高い。
Rubygemsのリポジトリも覗いてみると、今回アップデートした前と後で、含まれている証明書が違う。
- https://github.com/rubygems/rubygems/tree/v2.5.1/lib/rubygems/ssl_certs
- https://github.com/rubygems/rubygems/tree/v2.6.7/lib/rubygems/ssl_certs
あと、過去にも似たようなことが起こっていたらしい。
2017/02/06 追記
ありがたいことに投稿から数か月経過してもたまに「いいね」を押してくださる方がいるようなので、今更ながら追記。公式ガイドでは、ブラウザ等でgemファイルを手動ダウンロードする方法が案内されています。そちらのほうがHTTPSを使うため、より安全です。
リンクされているrubygems-update-2.6.7.gem
は現在では古くなっているバージョンのため、特に理由がなければ最新バージョンのgemファイルをダウンロードするのが良いと思います。