ERROR: Could not find a valid gem 'compass' (>= 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://api.rubygems.org/specs.4.8.gz)
SSLv3の読み込みサーバーの認証で認証確認に失敗しています。
今回はWindowsで発生しました。
これはrubygems.orgが契約しているSSL証明書を発行している認証局のルート証明書の有効期限が切れてしまったことに起因しています。
解決方法
認証局のルート証明書を最新のものにしましょう。
https://rubygems.org/にアクセスしてみて、アドレスバーの鍵の部分をクリック。
「詳細」をクリックするとインスペクタが開く。
そしてView certificateをクリックするtSSLのタイプや認証局の情報などをまとめて確認することができます。
- 認証局: GlobalSign
- タイプ: OrganizationSSL
- 暗号化技術: SHA-256
ということがわかります。
GlobalSignの公式サイトのサポートを見てみると、GlobalSign Root Certificatesというズバリな項目があるので覗いてみます。
この表でどのルート証明書を利用すれば良いかがわかります。R1
のようです。(R1
に関してはこちらに詳細があります)
新しいルート証明書が公開されているのでそちらをダウンロードして、rubygemsに設置すれば問題が解決します。
Download Root-R1 (Binary/DER Encoded)
で素直にder形式をダウンロードしても良いし、View in Base64
で見れる証明書をコピーして自分でpemファイルを作成して設置しても良いです。
設置場所
Rubyをインストールした方法や場所変わってきます。ここでは一般的な場所を示します。
Windows
where gem
とやると
C:\Ruby23-x64\bin\gem
などと帰ってきます。
そしてRubyのバージョンが2.3.0だった場合、C:\Ruby23-x64\lib\ruby\2.3.0\rubygems\ssl_certs
とかだと思います。
MacOS
rbenvを使ってrubyをインストールしている場合は
/Users/user_name/.rbenv/versions/2.3.0/lib/ruby/2.3.0/rubygems/ssl_certs
とかになると思います。