276

Michael Hartl チュートリアルを実行しようとしています。gemset に rails 3.2.14 をインストールしようとすると、次の問題が発生します。

$ gem install rails -v 3.2.14

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

https://rubygems.org/からデータをダウンロードできません- SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: 証明書の検証に失敗しました ( https://s3.amazonaws.com/production.s3.rubygems.org /specs.4.8.gz )

グーグルで調べたところ、Rubygems に非 SSL ソースを使用できることがわかったので、以下を実行しました。

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

そこで、再度レールを取り付けようとしたところ、成功しました。ただし、上記の問題はまだありますが、警告として:

警告: ' https://rubygems.org/ ' からデータを取得できません: SSL_connect が返されました=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]
  • OS X 10.8.5
4

25 に答える 25

386

RVM および OSX ユーザー向け

必ず最新の rvm を使用してください。

rvm get stable

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

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

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

    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 ノート

Windows 用のRuby インストーラービルドはLuis Lavenaによって準備されており、証明書へのパスは、 https://github.com/oneclick/rubyinstaller/issues/249 を確認して詳細をC:/Users/Luis/...確認し、この回答https://stackoverflow.comのように表示されます。 /a/27298259/497756で修正してください。

于 2013-10-03T05:48:52.877 に答える
243

最新の調査結果...

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

次に、.pem ファイルを ../2.1.0/rubygems/ssl_certs/ にコピーして、ビジネスに取り掛かります。

于 2014-12-04T15:52:10.340 に答える
181

Windows ユーザーの場合

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

  1. 最新のzipファイルをダウンロードします(私の場合は2.4.5)
  2. 解凍する
  3. 解凍したフォルダ内の「ruby setup.rb」を実行
  4. gem install コマンドを実行します
于 2014-12-24T20:13:54.870 に答える
18

Windows では、HTTPsource を使用して更新gemしてから、 using に戻す必要があります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 パッケージが署名されているかどうかは誰にもわかりませんか? 受け入れられた答えは、より良い解決策のように見えます。

于 2015-03-18T12:53:07.463 に答える
11

Windows ユーザー (およびその他のユーザー) 向け

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

まず、所有している ruby​​gem を調べます。

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

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

最新の証明書 (現在は AddTrustExternalCARoot-2048.pem) をhttps://rubygems.org/pages/downloadからダウンロードします。すべての証明書は、 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

于 2015-04-14T22:03:02.207 に答える
7

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

于 2014-04-11T10:30:50.180 に答える
5

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

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

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

sudo サービス ntp 停止 && sudo ntpdate pool.ntp.org && sudo サービス ntp 開始

于 2015-09-25T00:19:15.810 に答える
4

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

brew uninstall --force openssl

brew install openssl

于 2016-10-07T05:13:24.623 に答える
3

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

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

于 2014-09-12T10:36:29.487 に答える
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
于 2014-09-01T02:02:39.440 に答える
2

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

 sudo update-ca-certificates
于 2015-04-14T09:44:23.327 に答える
1

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

数か月前まで、この証明書はある CA から提供されていましたが、新しい証明書は別の CA から提供されています。

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

以下のリンクに示されている簡単な手順に従うことで、誰でも彼の解決策を見つけることができます

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

于 2015-08-17T06:28:48.250 に答える
1

試す

gem update --system

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

于 2017-01-11T06:33:52.917 に答える
0

--disable-binaryオプションを指定して ruby​​ をインストールしたことを確認してください。そうでない場合は、それをアンインストールし、オプションを指定して再インストールしてください。

詳細はこちら

于 2016-09-18T04:40:03.060 に答える
0

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

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

必要なすべての gem がインストールされています。

于 2014-01-13T15:35:37.903 に答える
0

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

gem update bundler

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

于 2016-10-25T02:07:53.333 に答える