web-dev-qa-db-ja.com

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

私はMichael Hartlのチュートリアルをやろうとしています。 GemsetにRails 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

グーグルを回った後、私はrubygemsのために非SSLソースを使うことができることに気付いたので、私は走った:

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

それから、Railsをもう一度インストールしようとすると成功しました。しかし、私はまだ上記の問題を抱えていますが、警告として:

警告: ' 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-darwin 12.3.0]
  • OSX 10.8.5
260

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 Installer windows用ビルドは Luis Lavena によって作成され、証明書へのパスはC:/Users/Luis/... check のように表示されます。 ] https://github.com/oneclick/rubyinstaller/issues/249 詳細およびこの回答については https://stackoverflow.com/a/27298259/497756 修正します。

374
mpapis

最新の調査結果...

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/rubygems/ssl_certs/に.pemファイルをコピーしてあなたのビジネスについて続けてください。

241
beauXjames

Windowsユーザー向け

Goto link http://rubygems.org/pages/download

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

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

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

更新:

Mpapisが述べているように、これは一時的な回避策としてのみ使われるべきです。非SSLソースを介してRubyGemにアクセスしている場合、セキュリティ上の懸念があるかもしれません。

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

Sudo gem sources -r http://rubygems.org
Sudo gem sources -a https://rubygems.org
52
Eduardo

Windowsでは、HTTP sourceを使用して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パッケージが署名されているかどうか誰かが知っていますか?受け入れられた答えはより良い解決策のように見えます。

15
roo2

Windowsユーザー(そしておそらく他のユーザー)

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

最初にあなたがどんなルビゲムを持っているか調べなさい:

rubygems –v

1.8.x、2.0.xまたは2.2.xのどちらを使用しているかに応じて、「rubygems-update-X.Y.Z.gem」という名前のアップデートgemをダウンロードする必要があります。ここで、X.Y.Zは必要なバージョンです。 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を実行している場合:download: https://github.com/rubygems/rubygems/releases/tag/v2.2.3

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

gem install –-local full_path_to_the_gem_file

Update gemを実行します。

update_rubygems --no-ri --no-rdoc

Rubygemsが更新されたことを確認してください。

rubygems –v

Update 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

このファイルをこの場所の“ ruby​​gems\ssl_certs”ディレクトリに置きます。

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

10
John Pankowicz

宝石のソースウェブサイト、すなわち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)
8
Borat Sagdiyev

gem update --systemを実行して私のために働いた

7
user3408293

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

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

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

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

4
dbrewer

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

brew uninstall --force openssl

brew install openssl

4
ntj

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

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

3
Paulo Fidalgo

Fedoraユーザー向け

cert.pemをcURLで提供される最新のファイルに更新します。 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
3
ENDOH takanao

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

 Sudo update-ca-certificates
2
maniek

やってみる

gem update --system

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

1
puneet18

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

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

このため、証明書を切り替える前にRubyGemsの既存のインストールを更新する必要があり、変更が広がるのに十分な時間(および更新する人)が必要です。

下のリンクに記載されている簡単な手順に従って、だれでも自分の解決策を見つけることができます。

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

1
ImranNaqvi

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

  1. プロジェクトフォルダに移動します
  2. バンドルインストールの種類

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

0
user3037926

Windowsユーザーの場合:

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

ネットワークアクセスに制限があり、SSLアクセスの設定を変更する方法がないため、エラーメッセージに基づいて、バンドラーのインストールを完了できるように以下の手順を実行しました。働いた...)。

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

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

  • $ INTRANET_HOME

spec.4.8.gzおよび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 sourceにアクセスしました。

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

私はインストール後に "gem install bundler"を成功させて実行しました、それはすべて私のgemのイントラネットを削除することでした:

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

私はそれがどんな同様の状況でも役立つことを願っています....

0

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

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

それとも私のようなファイアウォールによって防がれるかもしれません。これを試して:

Sudo gem install --http-proxy http:// localhost:port cocoapods -V

0
Victor Choy

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

「gem install」の前に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
Jacob

Rubyが - disable-binaryオプションでインストールされていることを確認します。そうでない場合は、アンインストールしてからオプションを指定して再インストールします。

詳細情報 はこちら

0
Feuda

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

gem update bundler

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

0
Alexander

答えはもはや有効ではありません。私は古いWindowsRubyでこの問題に遭遇したので、今私は答えを投稿します。

私が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から証明書のみをコピーする必要があります。最新のRuby(または少なくともRuby2.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

0
tukan