SSLエラーrubygemsをインストールすると、「https://rubygems.org/」からデータをプルできません


269

私はマイケルハートルチュートリアルをしようとしています。gemsetにレール3.2.14をインストールしようとすると、次の問題が発生します。

$ gem install rails -v 3.2.14

エラー:有効なgem 'rails'(= 3.2.14)が見つかりませんでした。理由は次のとおりです:

https://rubygems.org/からデータをダウンロードできません-SSL_connectが返されました= 1 errno = 0 state = SSLv3サーバー証明書Bを読み取りました:証明書の検証に失敗しました(https://s3.amazonaws.com/production.s3.rubygems.org /specs.4.8.gz

Googlingした後、Rubygemsに非SSLソースを使用できることがわかったので、実行しました。

sudo gem sources -a http://rubygems.org

その後、レールを取り付けようとしたところ、うまくいきました。しかし、私はまだ上記の問題を抱えていますが、警告として:

警告:「https://rubygems.org/」からデータをプルできません:SSL_connect returned = 1 errno = 0 state = SSLv3サーバー証明書Bを読み取ります:証明書の検証に失敗しました(https://s3.amazonaws.com/production.s3 .rubygems.org / specs.4.8.gz

この警告/エラーを完全に削除するにはどうすればよいですか?

私は以下を使用しています:

  • RVM 1.22.15
  • ruby 2.0.0p247(2013-06-27リビジョン41674)[x86_64-darwin12.3.0]
  • OSX 10.8.5

ほぼ回帰エラーのように見えます。私の生徒の1人がOS Xで今日同じ問題を抱えていることに気付きました。それでも問題を解決しています。昨年から、SOに関連する他の関連する質問があります(同じですか?)。
vgoff 2013年

これは、廃止された2.0.*バージョンのの既知のバグですrubygems。最新のrubygemsバージョンに更新してからgem update --system、を再実行してくださいgem install
Aleksei Matiushkin 2013年

Rubyバージョンを更新しても問題がない場合は、更新してください。この問題は、新しいRubyバージョンで修正されています。
香港

httpソースを追加した後、実行するとgem sources -r https://rubygems.org/うまくいきました(警告を削除するまで)。
BrainSlugs83 2015

これは、Linux / Mac上の1行目に選別することができますが、あまりにも多くの長いの答えがあります。stackoverflow.com/a/56993071/5689995
laimison

回答:


382

RVMおよびOSXユーザー向け

最新のrvmを使用していることを確認してください:

rvm get stable

次に、2つのことを行うことができます。

  1. 証明書を更新します。

    rvm osx-ssl-certs update all
  2. rubygemsを更新します。

    rvm rubygems latest

非RVMユーザーの場合

証明書のパスを見つける:

cert_file=$(ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE')

証明書を生成:

security find-certificate -a -p /Library/Keychains/System.keychain > "$cert_file"
security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain >> "$cert_file"

コード全体:https : //github.com/wayneeseguin/rvm/blob/master/scripts/functions/osx-ssl-certs


OSX以外のユーザー向け

必ずパッケージを更新してください ca-certificates(古いシステムでは使用できない可能性があります-セキュリティアップデートを受け取らない古いシステムを使用しないでください)

Windowsノート

Rubyのインストーラは、Windowsがすることによって製造されるためのビルド・ルイス・ラヴェーナと証明書へのパスのようなものを示すことになるC:/Users/Luis/...チェックhttps://github.com/oneclick/rubyinstaller/issues/249詳細はこの答えをhttps://stackoverflow.com / a / 27298259/497756修正。


RVMを使用していない場合、証明書を更新する他の方法はありますか?
Eduardo

実行するrvm rubygems latestと、欠落したチェックサムについて不平を言うエラーが発生しました。しかし、それなしでも物事は機能し始めました... --verify-downloads 1必要に応じて強制することができたようです。なぜそうなるのでしょうか?バージョンを取得しようとしましたrubygems-2.1.6
Timo

rvmは、コードのダウンロード用にmd5をハードコードします。headバージョン5に追加しただけで、stableまもなくリリースされます。
mpapis 2013年

2
私はそれをWindowsで実行して、コンピューターにも存在しないパスを取得しました "C:/Users/Luis/Code/openknapsack/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0k/ssl /cert.pem "Luisという名前のユーザーもいません。なんてこったい?
isimmons 2014

3
Mac Mojaveユーザーへの提案はありますか?実行しているpermission denied: /private/etc/ssl/cert.pem
Chandrew

241

最新の調査結果...

https://gist.github.com/luislavena/f064211759ee0f806c88

最も重要なのは...ダウンロード https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

それを貼り付ける場所を理解する

C:\>gem which rubygems
C:/Ruby21/lib/ruby/2.1.0/rubygems.rb

次に、.. / 2.1.0 / ruby​​gems / ssl_certs /にある.pemファイルをコピーして、ビジネスを続けます。


8
.pemではなく、必ず拡張子を付けて保存してください.pem.txt
Dan Dascalescu、2014

3
それが機能しない場合はどうなりますか?あなたの答えが言うように私はやったが、それでもエラーが出ます!1)ファイルを取得したAddTrustExternalCARoot-2048.pem、2)ファイルをに配置したC:\Ruby193\lib\ruby\1.9.1\rubygems\ssl_certs、3)実行gem install susyして同じエラーが発生したUnable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Green

Rubyインストールを更新してみてください...この要旨は、ご使用のバージョンとの下位互換性を保証するものではありません
beauXjames

1
あなたが与えたルイス・ラベナのリンクについてのいくつかのメモ。彼が言及しているzipファイルの代わりに、gemファイルからrubygemsをインストールすることができます。解凍したgemまたはzipファイルからインストールするコマンドが見つかりません。ここの宝石-rubygems.org/pages/download。-コマンドがあるgem install --local C:\Downloads\rubygems-update-2.4.5.gem
Erran Morad

9
ダウンロードリンクはもう有効ではありません。まだこの問題に直面している方は、Dheerendraの回答を参照してください
Llama.new

174

Windowsユーザーの場合

リンクに移動http://rubygems.org/pages/download

  1. 最新のzipファイルをダウンロードします(私の場合は2.4.5)。
  2. 解凍します
  3. 解凍したフォルダで「ruby setup.rb」を実行します
  4. 今gem installコマンドを実行してください

1
Windows 8.1、Ruby 2.0.0で私のために働いた。乾杯。
Yi Zeng 2014

7
Windowsユーザーに最適なソリューション
ソリンハイダウ2015

1
他の回答にリストされているWindowsの代替案よりもはるかに簡単で、Windows 7 64ビットで完全に機能しました。ありがとう!
グルガドゥルゲン2015年

1
これは私にはうまくいきません。Devkitは、Windows 7のrubyの最新バージョンと互換性がありません
roo2

2
Windows 10およびRuby 2.1.0で動作します。ありがとう!
MSC

54

非SSLソースを使用する場合は、最初にHTTPSソースを削除してから、HTTPソースを追加してください。

sudo gem sources -r https://rubygems.org
sudo gem sources -a http://rubygems.org  

更新:

mpapisが述べるように、これは一時的な回避策としてのみ使用する必要があります。非SSLソースを介してRubyGemsにアクセスしている場合、セキュリティ上の問題が発生する可能性があります。

回避策が不要になったら、SSLソースを復元する必要があります。

sudo gem sources -r http://rubygems.org
sudo gem sources -a https://rubygems.org

これは、この当面の問題を足の裏が、それはまだ悪いある古い証明書を使用してルビーを残していない、投票ダウンとして
mpapis

1
これは根本的な問題の回避策にすぎないことを明確にするために、回答を更新しました。Terinが非SSLソースを使用しようとしたときに、Terinの問題に対処しようとしました。
Eduardo

5
FYI、私がしなければならなかったsudo gem sources -r https://rubygems.org/sudo gem sources -r http://rubygems.org/。末尾に注意してください/
ロスロジャース

ええ、それは可能です。そもそもソースの追加方法によると思います。つまり、ソースが末尾に追加された場合、ソース/も末尾とともに削除され/ます。
Eduardo

fu @ ^!#gemをダウンロードするために私のために働いた唯一のソリューション。どうもありがとうございます!
Genarito 2018年

16

WindowsではHTTP、更新にソースを使用してから、使用にgem戻す必要がありHTTPSます。

gem sources -r https://rubygems.org/
gem sources -a http://rubygems.org/
gem update --system
gem sources -r http://rubygems.org/
gem sources -a https://rubygems.org/

編集:警告これが安全かどうかはわかりません。rubyパッケージが署名されているかどうか知っていますか?受け入れられた答えはより良い解決策のようです。


共有いただきありがとうございます。一時的にhttpsからhttpへの変更は機能しましたが、gemfileを直接変更する必要がありました。
ノハカリーム2016年

2
私の場合、末尾の/がhttps URLで必要でした。
Alwyn Schoeman 2017

1
この回答の更新として、gem sources -lシステムを更新する前と後でソースを確認する前に、ソースを確認することをお勧めします。更新に失敗した場合は、-systemの直後にバージョン番号を指定します。rubygems.org/gems/rubygems-update/versionsを参照するか、同僚にgem -v報告内容を尋ねてください。
ゲイリーS.ウィーバー

10

Windowsユーザー(および他のユーザー)

Rubygems.orgには、この問題を修正する方法だけでなく、なぜ多くの人々がそれを持っているのかを説明するガイドがあります:SSL証明書の更新 問題の理由は、rubygems.orgがより安全なSSL証明書(SHA-2 256ビット暗号化を使用します)。rubygemsコマンドラインツールは、正しい証明書への参照をバンドルします。したがって、古いバージョンのrubygemsを使用してrubygems自体を更新することはできません。Rubygemsは最初に手動で更新する必要があります。

まず、あなたが持っているルビジェムを見つけます:

rubygems v

1.8.x、2.0.x、または2.2.xのどちらを使用しているかに応じて、「rubygems-update-XYZgem」という名前のアップデートgemをダウンロードする必要があります。XYZは必要なバージョンです。1.8.xの実行:ダウンロード:https : //github.com/rubygems/rubygems/releases/tag/v1.8.30 2.0.xの実行:ダウンロード:https : //github.com/rubygems/rubygems/releases/tag/v2 .0.15 2.2.xの実行:ダウンロード:https : //github.com/rubygems/rubygems/releases/tag/v2.2.3

アップデートgemをインストールします。

gem install –-local full_path_to_the_gem_file

更新gemを実行します。

update_rubygems --no-ri --no-rdoc

rubygemsが更新されたことを確認します。

rubygems v

アップデートgemをアンインストールします。

gem uninstall rubygems-update -x

この時点で、あなたは大丈夫かもしれません。ただし、新しい証明書用の最新の公開鍵ファイルがない可能性があります。これをする:

https://rubygems.org/pages/downloadから最新の証明書(現在はAddTrustExternalCARoot-2048.pem)をダウンロードします。すべての証明書は次の場所にもありますhttps : //github.com/rubygems/rubygems/tree/master/lib/rubygems/ssl_certs

それを置く場所を見つけてください:

gem which rubygems

この場所にある「rubygems \ ssl_certs」ディレクトリにこのファイルを置きます。

rubygems commitに従って、証明書はより具体的なディレクトリに移動されます。したがって、現在、証明書(AddTrustExternalCARoot-2048.pem)は次のパスにあると予想されますlib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem



8

宝石のソースWebサイト、つまりrubygems.orgを使用してみてください。httpsではなくhttpを使用します。この方法では、証明書のインストールなどの作業は必要ありません。

例-

gem install typhoeus --source http://rubygems.org

これは機能しますが、注意点が1つあります。

gemはインストールされていますが、ドキュメントは証明書エラーが原因ではありません。ここに私が得るエラーがあります

Parsing documentation for typhoeus-0.7.0 WARNING: Unable to pull 
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)

7

ランニングgem update --systemは私のために働いた


6
これは、Windowsでも同様に機能しました。一時的に従来のHTTPに切り替えてから更新し、SSLに戻す必要がありました。
トムメイフィールド

1
エラー。SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
グリーン

gem sources --remove rubygems.org gem sources -a rubygems.org gem update --system
Stefan Steiger

4

システムクロックが正しいことを確認してください

この正確なエラーは、VirtualBoxで実行されているUbuntu仮想マシンで本日発生しました。非常に古い一時停止状態から再開したことに気づく前に、上に示した解決策のほとんどを試しましたが、時計が何日もずれていました。

時計を更新するとすぐに問題が解決しました。私の場合に使用したコマンドは次のとおりです。

sudo service ntp stop && sudo ntpdate pool.ntp.org && sudo service ntp start


4

自作でopensslをアンインストールして再インストールするだけでこの問題は解決しました。

brew uninstall --force openssl

brew install openssl


1
Homebrewの新しいバージョンでは、次のようなコマンドを実行する必要がある場合がありますbrew uninstall --ignore-dependencies openssl(古いforceフラグと同じです)
Batkins

3

Fedoraユーザーの場合

cert.pemcURLによって提供される最新のファイルに更新します:http : //curl.haxx.se/ca/cacert.pem

curl -o `ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE' |tr -d \"` http://curl.haxx.se/ca/cacert.pem

これに相当するwindows cmdまたはpowershellはありますか?
Erran Morad

3

Windowsを使用している場合は、Internet Explorerでhttps://rubygems.org/を開きます

セキュリティ情報をクリックして、証明書をインポートします。一番下の行は、証明書チェーンが古くなっており、この新しい証明書を追加する必要があることです。証明書を信頼できるものとして検証できる限り、これはセキュリティ違反ではないことに注意してください。


それは私には何もしませんでした... OpenSSLはWindows証明書ストアを使用しますか?
Julien Ruffin 2014

2

私の場合、Ubuntu CA証明書は古くなっています。私はそれを実行して修正しました:

 sudo update-ca-certificates

2

HTTPSの代わりにHTTPを使用して宝石をダウンロードするように自動化できるアプローチ/ワンライナー:

printf -- '---\n:sources:\n- http://rubygems.org\n' | tee ~/.gemrc

Dockerコンテナで問題が発生した場合、問題なく機能します。
user7364588

1

RubyGems(コマンドラインツール)の特定のケースは、コード内に信頼証明書をバンドルする必要があることです。これにより、ベースオペレーティングシステムがサーバーのIDを確認できない場合でも、RubyGemsはサーバーとの接続を確立できます。

数か月前までは、この証明書は1つのCAによって提供されていましたが、新しい証明書は別のCAによって提供されていました。

このため、RubyGemsの既存のインストールは、証明書の切り替え前に更新する必要があり、変更が普及する(そして人々が更新する)のに十分な時間を与える必要があります

誰でも彼の解決策を見つけるには、以下のリンクにある簡単な手順に従ってください

https://gist.github.com/luislavena/f064211759ee0f806c88


1

試す

gem update --system

それが問題を解決することを願っています。


私のために働く。ありがとう。Ubuntu; Rubyはを使用してインストールされましたapt install ruby
Marslo 2017

ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
ジョナサン

1

http://curl.haxx.se/ca/cacert.pemからcacert.pemファイルをダウンロードします。このファイルをC:\ RailsInstaller \ cacert.pemに保存します。

次に、SSL_CERT_FILEを設定して、認証局バンドルをrubyに認識させます。現在のコマンドプロンプトセッションでこれを設定するには、次のように入力します。

SSL_CERT_FILE = C:\ RailsInstaller \ cacert.pemを設定します


0

キュウリの宝石をインストールしようとしたときに同じ問題が発生しました。しかし、私はbundler gemがruby 2.0ですでにインストールされていることに気付きました。必要なgemを含むGemfile.rbをプロジェクトフォルダーに作成し、この手順に従いました

  1. プロジェクトフォルダに移動する
  2. タイプバンドルインストール

インストールされている必要なすべての宝石。


0

OpenCSW pkgutilを使用するIllumos / Solarisの場合:

「gemインストール」の前にCSWcacertificatesをインストールします

pkgutil -yi CSWcacertificates

OpenCSW以外のRubyキットを使用している場合、Rubyバージョンは別の場所で証明書ファイルを見つけることを期待する場合があります。この場合、OpenCSWの/etc/opt/csw/ssl/cert.pemを期待される場所にシンボリックリンクしました。

rubyがそれを見つけると期待する場所を確認します。

export cf=`ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE'` && echo $cf

次に、矛盾がある場合はリンクします。

ln -s /etc/opt/csw/ssl/cert.pem $cf && file $cf


0

Windowsユーザーの場合:

インターネットにアクセスできるテストマシンにRuby 2.2.3(+ ruby​​gems 2.5.1)を正常にインストールした後、ネットワーク内の本番マシンにバンドルをインストールすると、このSSLエラーが発生しました。

ネットワークアクセスに制限があり、SSLアクセスの設定を変更する方法がなかったため、エラーメッセージに基づいて、次の手順を実行して、バンドラーのインストールを完了できるようにしました(これは奇妙に聞こえるかもしれませんが、働いた...)。

インターネットに無制限にアクセスできるマシンを介して、次のファイルをダウンロードしました。

上記のリンクのフォルダー構造を維持しながら、これらのファイルをイントラネットサーバーに追加しました。

  • $ INTRANET_HOME

spec.4.8.gz e latest_specs.4.8.gz

  • $ INTRANET_HOME \ quick \ Marshal.4.8

bundler-1.11.2.gemspec.rz

  • $ INTRANET_HOME \ gems

bundler-1.11.2.gem

次に、gemソースにアクセスするためにイントラネットを追加しました。

gem sources -a http://mydomain.com.br

インストール後、「gem install bundler」を成功させて実行しました。必要なのは、gemのイントラネットを削除することだけでした。

gem sources -r http://mydomain.com.br

これが同様の状況で役立つことを願っています...


0

Windows 10のユーザーとして、私はDheerendraの回答に従いましたが、ある日それがうまくいきました。次の日、私は再び問題を経験しました、そして彼の修正はうまくいきませんでした。私にとっての修正は、次のように更新することでしたbundler

gem update bundler

私のバージョンはbundler数か月以上前のものだと思います。


0

--disable-binaryオプションを使用して rubyがインストールされていることを確認します。インストールされていない場合は、アンインストールして、オプションで再インストールします。

詳細はこちら


0

答えはもう有効ではありません。古いWindows rubyで問題が発生したので、今すぐ回答を投稿します。

activesupport gemをインストールしたい場合:

gem in activesupport --version 5.1.6

ERROR:  Could not find a valid gem 'activesupport' (= 5.1.6), 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)

次の手順では、新しいWindows ruby​​から証明書のみをコピーする必要があります。最新のルビー(または少なくともルビー2.4.0)を取得し、次の操作を行います。

これらのディレクトリから証明書をコピーします(必要に応じて調整してください)。
C:\prg_sdk\rubies\Ruby-2.4\lib\ruby\2.4.0\rubygems\ssl_certs\rubygems.org
C:\prg_sdk\rubies\Ruby-2.4\lib\ruby\2.4.0\rubygems\ssl_certs\index.rubygems.org

目的地へ(必要に応じて調整します):
C:\prg_sdk\rubies\Ruby231-p112-x64\lib\ruby\2.3.0\rubygems\ssl_certs

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.