gem install 時にSSLルート証明書のエラーが出力された際の対処方法

検索したら上位にヒットするQiitaでのTIPShttp://qiita.com/shimoju/items/394818b4989b94680aaf
に書いてあるやり方だと改善しなかったんで対処した際のメモです。

関係ないけどSurfaceのスクリーンショット撮る操作が覚えられない。
アクティブウィンドウのスクリーンショットを撮るには Alt + Windowsキー + Fn + Space という。
中指と薬指の間に血豆ができるほど練習した昇龍拳のような懐かしさ。体で覚えろということか。
タブレットモードだとWindowsロゴタッチしながら音量下げボタン。あれ?アクティブウィンドウだけ撮る方法ないのかな。

まあ横一列なので適当にえいっやって押せば何とかなるかも。
というわけで本題に入ります。

作業環境

Surface Pro 2 です。重いです。。3を待てばよかった。。

Surface

Surface

事象

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Users\daisuke>gem install nokogiri
ERROR:  Could not find a valid gem 'nokogiri' (>= 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/latest_specs.4.8.gz)

原因

rubyがgem installでhttps経由でgemをダウンロードするときにSSLで利用するルート証明書の検証に失敗しているため。
https接続先サイトの証明書がオレオレ証明書でないことを検証するためには正しいルート証明書が正しいパスに配置されている必要がある。

対処方法

rubyが利用しているルート証明書のパスへ移動

C:\Users\daisuke>cd C:\Ruby200\lib\ruby\2.0.0\rubygems\ssl_certs

ルート証明書をダウンロード

C:\Ruby200\lib\ruby\2.0.0\rubygems\ssl_certs>wget http://curl.haxx.se/ca/cacert.
pem
--2015-01-15 01:29:29--  http://curl.haxx.se/ca/cacert.pem
Resolving curl.haxx.se... 80.67.6.50
Connecting to curl.haxx.se|80.67.6.50|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 251894 (246K)
Saving to: `cacert.pem'

100%[======================================>] 251,894      124K/s   in 2.0s

2015-01-15 01:29:32 (124 KB/s) - `cacert.pem' saved [251894/251894]

ルート証明書へのパスを確認

C:\Ruby200\lib\ruby\2.0.0\rubygems\ssl_certs>ruby -ropenssl -e "p OpenSSL::X509:
:DEFAULT_CERT_FILE"
"C:/Users/Luis/Code/luislavena/knap-build/var/knapsack/software/x64-windows/open
ssl/1.0.0o/ssl/cert.pem"

存在しないパスになっているので環境変数SSL_CERT_FILEを追加して証明書をダウンロードしたパスを値として指定する。
システムのプロパティを開く

システムのプロパティ

システムのプロパティ

環境変数の設定

環境変数

環境変数

自分の場合、システム環境変数としてSSL_CERT_FILEを追加しました。

新しいシステム変数にSSL_CERT_FILEを追加

新しいシステム変数にSSL_CERT_FILEを追加

システム環境変数を設定したらOSをリブートします。
リブート後 gem install でお好きなgemをインストールしてください。今度はエラーなく完了できるはずです。

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Users\daisuke>ruby -v
ruby 2.0.0p598 (2014-11-13) [i386-mingw32]

C:\Users\daisuke>gem install nokogiri
Fetching: mini_portile-0.6.2.gem (100%)
Successfully installed mini_portile-0.6.2
Fetching: nokogiri-1.6.5-x86-mingw32.gem (100%)
Nokogiri is built with the packaged libraries: libxml2-2.9.2, libxslt-1.1.28, zl
ib-1.2.8, libiconv-1.14.
Successfully installed nokogiri-1.6.5-x86-mingw32
Parsing documentation for mini_portile-0.6.2
Installing ri documentation for mini_portile-0.6.2
Parsing documentation for nokogiri-1.6.5-x86-mingw32
unable to convert "\x90" from ASCII-8BIT to UTF-8 for lib/nokogiri/1.9/nokogiri.
so, skipping
unable to convert "\x90" from ASCII-8BIT to UTF-8 for lib/nokogiri/2.0/nokogiri.
so, skipping
unable to convert "\x90" from ASCII-8BIT to UTF-8 for lib/nokogiri/2.1/nokogiri.
so, skipping
Installing ri documentation for nokogiri-1.6.5-x86-mingw32
2 gems installed

C:\Users\daisuke>gem install anemone
Fetching: robotex-1.0.0.gem (100%)
Successfully installed robotex-1.0.0
Fetching: anemone-0.7.2.gem (100%)
Successfully installed anemone-0.7.2
Parsing documentation for robotex-1.0.0
Installing ri documentation for robotex-1.0.0
Parsing documentation for anemone-0.7.2
Installing ri documentation for anemone-0.7.2
2 gems installed
スポンサーリンク