結論としては、以下の記事と一緒。
Gem - RubyでHTTPS接続時にSSL証明書のエラーがでる。 - Qiita
でも、Windowsの場合はどこから新しい証明書ファイルをダウンロードすればよいかわからなかった。
なお、一次情報源はここ Workaround RubyGems' SSL errors on Ruby for Windows (RubyInstaller)
環境
- Windows7 64bit
- RubyInstaller for Windows 2.0.0-p481 ←古いのが原因
状況
次のようなエラーメッセージが表示されました。
$ gem i berkshelf
ERROR: Could not find a valid gem 'berkshelf' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://rubygems.org/latest_specs.4.8.gz)
原因
SSL証明書の有効期限切れ
解決方法① ~有効な鍵を追加する~
RubyInstallerの最新版7zipアーカイブに含まれる、SSL証明書ファイルをコピーする
$ 7zip ruby-2.1.5-x64-mingw32.7z
$ cp ruby-2.1.5-x64-mingw32\lib\ruby\2.1.0\rubygems\ssl_certs\* ruby-2.0.0-x64-mingw32\lib\ruby\2.0.0\rubygems\ssl_certs
もしくは、特定の証明書だけダウンロードして保存する
cd ruby-2.0.0-x64-mingw32\lib\ruby\2.0.0\rubygems\ssl_certs
curl -O https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem
解決方法② ~rubygemsをupgradeする~
ruygemsを自動でアップグレードするgem(ruby-gems-update.gem)をインストールしなければならなかったりとめんどくさい。
# rubygems-update-1.8.30.gemをダウンロードしておく。
$ gem install --local C:\rubygems-update-1.8.30.gem
$ update_rubygems --no-ri --no-rdoc
$ gem uninstall rubygems-update -x
解決方法③ ~新しいRubyを入れる~
RubyInstaller for Windowsの最新版をダウンロードしてインストールする。