私は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を使用してください。
rvm get stable
その後、2つのことができます。
証明書を更新します。
rvm osx-ssl-certs update all
Rubygemsを更新する:
rvm rubygems latest
証明書のパスを探す:
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
必ずパッケージca-certificates
を更新してください。 (古いシステムでは利用できない可能性があります - セキュリティアップデートを受け取らない古いシステムを使用しないでください)
Ruby Installer windows用ビルドは Luis Lavena によって作成され、証明書へのパスはC:/Users/Luis/...
check のように表示されます。 ] https://github.com/oneclick/rubyinstaller/issues/249 詳細およびこの回答については https://stackoverflow.com/a/27298259/497756 修正します。
最新の調査結果...
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ファイルをコピーしてあなたのビジネスについて続けてください。
Goto link http://rubygems.org/pages/download
非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
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パッケージが署名されているかどうか誰かが知っていますか?受け入れられた答えはより良い解決策のように見えます。
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
このファイルをこの場所の“ rubygems\ssl_certs”ディレクトリに置きます。
rubygems commit に従って、証明書はより具体的なディレクトリに移動されます。したがって、現在、証明書(AddTrustExternalCARoot-2048.pem)は次のパスにあると予想されますlib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem
宝石のソースウェブサイト、すなわち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)
gem update --system
を実行して私のために働いた
この正確なエラーは、VirtualBox上で実行されているUbuntu仮想マシンで今日起こりました。非常に古い中断状態から再開したことに気付く前に、上記の解決策のほとんどを試してみましたが、私の時計は何日も経っていました。
時計を更新するとすぐに問題が解決しました。これが私の場合に使用したコマンドです。
Sudo service ntp stop && Sudo ntpdate pool.ntp.org && Sudo service ntp start
Opensslとhomebrewをアンインストールして再インストールするだけでこの問題は解決しました。
brew uninstall --force openssl
brew install openssl
Windowsを使用している場合は、Internet Explorerで https://rubygems.org/ を開きます。
セキュリティ情報をクリックして証明書をインポートします。肝心なのは、あなたの証明書チェーンが古くなっており、この新しい証明書を追加する必要があるということです。証明書を信頼できるものとして検証できる限り、これはセキュリティ違反ではありません。
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
私の場合、UbuntuのCA証明書は古くなっています。私は実行してそれを修正しました:
Sudo update-ca-certificates
やってみる
gem update --system
それが問題を解決することを願っています。
RubyGems(コマンドラインツール)の特別な場合は、コードの中に信頼証明書をバンドルする必要があることです。これにより、RubyGemsは、基本オペレーティングシステムがそれらの身元を確認できない場合でもサーバーとの接続を確立できます。
数ヶ月前までは、この証明書は1つのCAによって提供されていましたが、新しい証明書は別のCAによって提供されています。
このため、証明書を切り替える前にRubyGemsの既存のインストールを更新する必要があり、変更が広がるのに十分な時間(および更新する人)が必要です。
下のリンクに記載されている簡単な手順に従って、だれでも自分の解決策を見つけることができます。
キュウリの宝石をインストールしようとしたとき、私は同じ問題を抱えていた。しかし、私はそのbundle gemがすでにRuby 2.0と一緒にインストールされていることに気づいた。必要なgemを含むGemfile.rbをプロジェクトフォルダーに作成し、この手順に従いました
必要なすべてのgemがインストールされています。
Windowsユーザーの場合:
インターネットにアクセスできるテストマシンにRuby 2.2.3(+ rubygems 2.5.1)を正常にインストールした後、ネットワーク内の実稼働マシンにbundlerをインストールしたときにこのSSLエラーが発生しました。
ネットワークアクセスに制限があり、SSLアクセスの設定を変更する方法がないため、エラーメッセージに基づいて、バンドラーのインストールを完了できるように以下の手順を実行しました。働いた...)。
インターネットに無制限にアクセスできるマシンを介して、次のファイルをダウンロードしました。
上記のリンクのフォルダ構造を維持したまま、これらのファイルをイントラネットサーバーに追加しました。
spec.4.8.gzおよびlatest_specs.4.8.gz
bundler-1.11.2.gemspec.rz
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
私はそれがどんな同様の状況でも役立つことを願っています....
HTTPSの代わりにHTTPを使用してgemをダウンロードするように自動化できるアプローチ/ワンライナー:
printf -- '---\n:sources:\n- http://rubygems.org\n' | tee ~/.gemrc
それとも私のようなファイアウォールによって防がれるかもしれません。これを試して:
Sudo gem install --http-proxy http:// localhost:port cocoapods -V
「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
Rubyが - disable-binaryオプションでインストールされていることを確認します。そうでない場合は、アンインストールしてからオプションを指定して再インストールします。
詳細情報 はこちら
Windows 10ユーザーとして、私はDheerendraの 答え に従いました、そしてそれはある日私のために働いた。翌日、私は再び問題を経験しました、そして、彼の修正はうまくいきませんでした。私にとっては、修正はbundler
を次のように更新することでした。
gem update bundler
私のbundler
のバージョンは数ヶ月以上前のものだったと思います。
答えはもはや有効ではありません。私は古い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