💎

Windows10 に Ruby2.3.1 をインストールしたら gem の install/update で SSL エラー

2016/10/06に公開

症状

ここから最新版(2.3.1 x64)インストーラをダウンロードしてインストールした。
その後 gem update --system をしたら以下のエラーが出た。
gem install sass でも同様のエラーが出た。

ERROR: While executing gem .. (Gem::RemoteFetcher::FetchError)
SSL_connect returned=1 errono=0 state=SSLv3 read server certificate verify faild ( https://api.rubygems.org/specs.4.8.gz)

スマートな解決方法 (コメントを元に実践してみました)

  1. ルート証明書をダウンロードしてくる。
  2. コマンドラインで次のコマンドを発行する。 set SSL_CERT_FILE=C:¥Users¥myname¥Desktop¥cacert.pem
    • このとき = の前後にはスペースを入れないこと。
    • 今回は myname というユーザのデスクトップに置いています。
  3. 再度 install/update コマンドを試してみる。

(旧) 解決方法

  1. ルート証明書をダウンロードしてくる。
  2. 次のコマンドでデフォルトの証明書の位置を調べる。
    ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE"
  3. 指定されたフォルダをせっせと作る!
    自分の場合は C:/Users/Justin/Projects/knap-build/var/knapsack/software/x64-windows/openssl/1.0.1l/ssl/cert.pem と表示された。
  4. 作ったフォルダに1でダウンロードしたファイルを cert.pem というファイル名で設置する。
  5. 再度 install/update コマンドを試してみる。

いろいろ調べてみたけど

「gem のインストールフォルダに新しい証明書を置けば直る」とか、「 source を http 指定にすればいい」とか、「証明書を持っている gem をインストールすればいい」とか(そもそもインストールコマンドが動かない)、いろいろ出てきたので、片っ端から試してみたけど全てダメ。
最終的にたどり着いたのがデフォルトで参照する証明書の場所を探して、そのフォルダやファイルを用意するという、なんともやるせない解決方法だった。

参考文献

WindowsのRubyでHTTPSのアクセスが落ちるのを回避する

Discussion