バンドルのインストールがSSL証明書の検証エラーで失敗する


264

bundle installCentos 5.5でRails 3プロジェクトを実行すると、エラーで失敗します。

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 
read server certificate B: certificate verify failed 
(https://bb-m.rubygems.org/gems/multi_json-1.3.2.gem)
An error occured while installing multi_json (1.3.2), and Bundler cannot continue.
Make sure that `gem install multi_json -v '1.3.2'` succeeds before bundling.

手動で(によってgem install multi_json -v '1.3.2')gemをインストールしようとすると、動作します。他のいくつかの宝石でも同じ問題が発生します。私はRVM(1.12.3)、ruby 1.9.2、bundle 1.1.3を使用しています。

それを修正するには?


同じ問題に直面しています。ただし、別のgemの場合:Gem :: RemoteFetcher :: FetchError:SSL_connect returned = 1 errno = 0 state = SSLv3 read server certificate B:certificate verify failed(bb-m.rubygems.org/gems/activeresource-3.2.3.gem
Sathish 2012

4
同じ状況で同じエラーが発生しています。これらの他の応答を考えると、それはサーバー側の問題だと思います。
asfallows

Rails 5でも同様の問題がありsource "https://rubygems.org''ました。Gemfileに追加して「gem update --system」を実行することで修正しました。詳細については、こちらをご覧ください。
Nesha Zoric

ネシャ、その修正は私のために働いた。ありがとうございました!
Martin Marino

回答:


310

更新

カルマを計算したので、この答えからwh..errを十分に掘り下げました。これは修正されているはずです。

re:Ownatik経由で、バンドルのインストールがSSL証明書の検証エラーで失敗する

gem update --system

私の答えはまだ正しいので、うまくいかなかった場合の参考のために以下に残しておきます。


正直なところ、最善の一時的な解決策は

[...]一時的な回避策として、gemfileで非sslバージョンのrubygemsを使用します。

ユーザーOwnatik経由

彼らが意味することはGemfile、あなたのrailsアプリケーションディレクトリの変更の一番上にあります

source 'https://rubygems.org'

source 'http://rubygems.org'

第二版は、HTTPではなくHTTPであることに注意してくださいS


1
私がこの答えを受け入れたのは、それが私が最初にしたことだったからです。その後、展開戦略を変更しました。次に、アプリケーションを別のサーバーでバンドルして実行vendorし、質問に記載したサーバーに(gemsをディレクトリに含めて)コピーします。
mrzasa

6
これは私にはうまくいきませんでした。以下の@fbernierから提供されたリンクで修正されました。
スコットフィスター2013年

5
これは機能しません。これを実行すると、Latest version currently installed. Aborting. 他のアイデアの出力が提供されますか?
Matt Huggins

1
ソースを変更するという点では、私のような新しい人のために。このファイルがアプリケーションディレクトリにあることを指定します。railsinstallerディレクトリで探していました。とにかく、私はソースを変更し、それがようやく機能しました。更新を実行しようとすると、証明書エラーが発生します:(
Brian

2
gem update --systemまったく同じ証明書エラーで失敗する:\
BlueRaja-Danny Pflughoeft

226

一時的なソリューションとして、ssl gemソースを非sslに置き換えます。


8
OMGは魅力のように機能しました!企業プロキシの背後にあるWindows 7 x64を使用しています。どうもありがとう!
Șerban Ghiță 2013

14
これが上位にランク付けされなかったのは驚きです。これが最も簡単なクイックフィックスでした。
hwatkins 2013年

3
一時ソリューション良い...次の点に注意してください:: RubyGemsのは、その歴史を通じて、以下のURLを経由して宝石を機能するように構成されています:* gems.rubyforge.org(RubyGemsの1.3.6およびそれ以前)* rubygems.org (RubyGemsの1.3。 7から1.8.25)* rubygems.org (RubyGems 2.0.1以降)
beauXjames 2013年

1
Windows 8での私にとって最速のソリューション
Tisch

3
これは、システムを外部からの攻撃に開放するため、有効な答えとは見なされません。
rubiii 2017年

160

その理由は古いルビジェムです。最初に非sslソースを使用してシステムパーツを更新する必要があります:

gem update --system --source http://rubygems.org/ (非SSL接続を使用してシステムパーツを一時的に更新しています)。

これで、使用する準備が整いましたgem update


5
クロスプラットフォームであり、RubyGemsが詳細を処理できる本当にシンプルなソリューション。いいね。
zrisher 14

2
これは受け入れられるべきものでした。上記の回答は、最初にsslソースを削除する必要があることを説明していません
Ephraim

1
ありがとう-これがチケットです。ソースを追加または削除するときに「キャッシュにありません」というメッセージが表示される場合は、末尾にスラッシュを付けて、または付けずに試してください。正確に一致する必要があります。
ティモシーリーラッセル

1
私は多くの解決策を検索してきました。これは魅力のように働いたものです。ありがとうございました!これは、真のソリューションとして選択する必要があります。
BerkerYüceer15年

1
ありがとうございました!!プレーンHTTPを介してgemをフェッチすることにならないため、これは受け入れられる答えであることに同意します。
アレクサンダー

117

Macを使用していて、RVMの最新バージョン(〜1.20)を使用している場合、次のコマンドでうまくいきました。

rvm osx-ssl-certs update

ありがとうございました!Mac OSX 10.8.5で私のために働いた
マシュー

ありがとう、私のためにも働いた。CocoaPodsをインストールしようとしていました。rvm 1.22.15、OS X 10.8.5
Logan Moseley

1
これは、エラーメッセージ "... see bit.ly/ruby-ssl"でも指摘されています。
IAmNaN 2013年

ありがとうございます!私のために働いた!! \ o /
ValterJúnior2015年

55

この問題は修正されています。rubygems(gem update --system)を更新し、opensslがOSの最新バージョンであることを確認するか、それでも動作しないというヒントを試してください:http : //railsapps.github.com/openssl-certificate-verify-failed.html


1
バンドルを更新して動作させるためにも必要です(rubygems 2.0.3 + bundle 1.3.2 + cygwin openssl 1.0.1eがwinxpで動作します)。
fakeleft 2013年

1.3.0から更新する必要がありましたが、現在1.3.4を使用しており、httpsがエラーをスローしなくなりました。bundler-1.3.0 / lib / bundler / vendor / net / http / persistent / ssl_reuse.rb:70: 「接続」で:SSL_connectが返されました= 1 errno = 0状態= SSLv3読み取りサーバーの鍵交換B:不正なecpoint(OpenSSL :: SSL :: SSLError)
Jon Kern

3
SSL証明書が受け入れられない場合、rubymemを更新することはできません!ここで輪になって実行;)
2015年

50

一時的な解決策(Ownatikが示唆):

次の行を含め、ホームパスに.gemrcというファイルを作成または変更します。 :ssl_verify_mode: 0

これにより、bundlerがgemをインストールしようとしたときに、gemのSSL証明書をチェックできなくなります。

* nixデバイスの場合、「ホームパス」はを意味し~/.gemrcます。必要に/etc/gemrc応じて作成することもできます。Windows XPの場合、「ホームパス」はを意味しc:\Documents and Settings\All Users\Application Data\gemrcます。Windows 7の場合C:\ProgramData\gemrc


3
%USERPROFILE%\.gemrcgemWindows でも検索されます。
ロムロCeccon

1
Windows 8の推奨ファイルの場所?
user1318135 2013

6
SSL検証の削除は、セキュリティホールを開く一時的な回避策です。もっとここで読む:github.com/rubygems/rubygems/commit/...
MRM

これは私の場合に便利です。すべての圧縮ファイルを制限するがhttps経由でそれらを許可する企業ファイアウォールの背後。
mydoghasworms 2013

このソリューションを試してみてください、私はこのコンテンツを追加したときに、私の場合にも働いていませんでした~/.gemrc:sources: - http://rubygems.org
アルトゥール・カップ

18

Windows7では、ここからcacert.pemファイルをダウンロードし、環境変数SSL_CERT_FILEに証明書を保存するパスを設定できます。

SET SSL_CERT_FILE="C:\users\<username>\cacert.pem"

または、このようにスクリプトで変数を設定できます ENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"

<username>を自分のユーザー名に置き換えます。


3
ありがとうございました。恒久的な修正はこちらです。guides.rubygems.org/ssl-certificate-update
Maheshkumar

これは正しい永続的な修正であり、セキュリティで保護されていないhttpソースの使用を回避します。
Dio Phung

15

RVMを使用している場合、この問題の実際の解決策は次のとおりです。

  1. rubygemsを更新します。 gem update --system
  2. RVMを使用してSSL証明書を更新します。 rvm osx-ssl-certs update all

RailsAppsプロジェクトのこのヒントへの帽子のヒント!


1
rvm osx-ssl-certs update all私にとってはうまくいきました。ステップ1を実行する必要がありませんでした
DMH


7

RVMを介してrubyがインストールされていて、簡単な修正が必要な場合(ブルーノの要求に従って読むことを望まない場合)は、次のように試してください。

rvm remove 1.9.x (or whatever version of ruby you are using)
rvm pkg install openssl
rvm install 1.9.2 --with-openssl-dir=$rvm_path/usr

詳細については、ここに私が解決策を見つけたリンクがあります。

http://railsapps.github.com/openssl-certificate-verify-failed.html

ちなみに、Ubuntuで証明書に触れる必要はありませんでした。

何よりも、これは回避策ではありません。SSL経由で宝石をダウンロードし、セキュリティをオフにするだけではなく、中間者攻撃のような問題がある場合は失敗します。


リンク先のページには「回避策」(最初)があり、次に適切な解決策があります。あなたの答えがもう少し明確であると述べた方が良いでしょう。それでも、(cacert.pemまたはを介して$rvm_path/usr/ssl)CA証明書を使用することは確かに正しい方法です。
ブルーノ

1
ブルーノ、その人が使用するUnixのフレーバーによって、ソリューションはおそらく少し異なります。リンクを読む必要があるようです。
ダニエルロシア2012

:ssl_verify_mode: 0この問題を修正する正しい方法である、その下にある3つのソリューションのいずれかとは対照的に、ページ上の「回避策」(、問題を開く)の違いについて話していました。
ブルーノ

@ブルーノ、私の記事を改訂しました。改善の可能性がある場合は、コメントを追加するか、wikiを編集してください。
Daniel Kehoe

6

これは修正されました

http://guides.rubygems.org/ssl-certificate-update/

RubyGems 2.6.xがリリースされたので、このバージョンに手動で更新できます。

https://rubygems.org/downloads/rubygems-update-2.6.7.gemをダウンロード

後で参照できるディレクトリ(例:ハードドライブCのルート)にファイルをダウンロードしてください。

次に、コマンドプロンプトを使用します。

C:\>gem install --local C:\rubygems-update-2.6.7.gem
C:\>update_rubygems --no-ri --no-rdoc

この後、gem --versionは新しい更新バージョンを報告します。

rubygems-update gemを安全にアンインストールできるようになりました。

C:\>gem uninstall rubygems-update -x

5

.pemファイルに関するここでの簡単なコピーと貼り付けの手順

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

証明書の検証に失敗しました

これまでのセクションを読んでいると、これが何を意味するかがわかります(知らない場合は恥>)。

AddTrustExternalCARoot-2048.pemをダウンロードする必要があります。コマンドプロンプトを開き、次のように入力します。

C:> gem which ruby​​gems C:/Ruby21/lib/ruby/2.1.0/rubygems.rbでは、そのディレクトリを見つけましょう。同じウィンドウ内から、ファイル拡張子までのパス部分を入力しますが、代わりにバックスラッシュを使用します。

C:> start C:\ Ruby21 \ lib \ ruby​​ \ 2.1.0 \ ruby​​gemsこれにより、指定したディレクトリ内にエクスプローラウィンドウが開きます。

手順3:新しい信頼証明書をコピーする

次に、ssl_certsディレクトリを見つけて、前の手順で取得した.pemファイルをコピーします。

GeoTrustGlobalCA.pemのような他のファイルとともにリストされます。


4

同じ問題ですが、ここでは別の宝石を使用しています:

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 
read server certificate B: certificate verify failed 
(https://bb-m.rubygems.org/gems/builder-3.0.0.gem)
An error occured while installing builder (3.0.0), and Bundler cannot continue.
Make sure that `gem install builder -v '3.0.0'` succeeds before bundling.

一時的な解決策:gem install builder -v '3.0.0'続行を可能にするbundle install


7
一時的な回避策として、gemfileで非SSLバージョンのrubygemsを使用することもできます。
fbernier 2012

1
私はそれをしました、そしてそれは働きます。現時点では、これで十分です。
mrzasa 2012

ここでも同じ問題があります。だから@OwnatikはRubygemsのSSLバージョンをどのように使うのですか?
Zeck



4

Windowsの永続的な修正:

  1. CACertをダウンロードし、http://guides.rubygems.org/ssl-certificate-update/から保存C:\ruby\ssl_certs\GlobalSignRootCA.pemます

  2. SSL_CERT_FILE」というシステム変数を作成し、に設定しC:\ruby\ssl_certs\GlobalSignRootCA.pemます。

  3. もう一度お試しくださいgem install bundler::

C:\gem sources
*** CURRENT SOURCES ***
https://rubygems.org/

C:\gem install bundler
Fetching: bundler-1.13.5.gem (100%)
Successfully installed bundler-1.13.5
1 gem installed

3

Ubuntu 12.04では、おそらく関連はありますが、少し異なるエラーが発生します。

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=unknown state: sslv3 alert handshake failure (https://d2chzxaqi4y7f8.cloudfront.net/gems/activesupport-3.2.3.gem)
An error occured while installing activesupport (3.2.3), and Bundler cannot continue.
Make sure that `gem install activesupport -v '3.2.3'` succeeds before bundling.

Gemfileで実行するbundle installと発生しsource 'https://rubygems.org'ます。

これはUbuntu 12.04のOpenSSLの問題です。Rubygems issue#319を参照してください。

これを修正するには、apt-get update && apt-get upgradeUbuntu 12.04 で実行してOpenSSLをアップグレードします。


3

私はこれを、rvmダウンロードしたバイナリが古くてOSで使用されなくなったOS XのOpenSSLでうまく機能しないという事実を突き止めることができました。

私のための解決策は、Rubyをインストールするときにコンパイルを強制することでしたrvm

rvm reinstall --disable-binary 2.2

これでうまくいきました。使用しているルビバージョンの「2.2」を置き換える必要があります
Josh

3

@ Alexander.IljushkinへのThx:

gem update --system --source http://rubygems.org/

その後もバンドルが失敗し、その解決策は次のとおりです。

gem install bundler


2

同様のエラーが発生しました。これが私がこれをどのように解決したかです:あなたのパスディレクトリで、Gemfileを確認してください。gemfileのソースをhttpsではなくhttpに編集して保存します。これにより、SSL証明書の問題なしにバンドラーがインストールされる場合があります。


2

Windowsマシンの場合、gemのバージョンを確認してください

gem --version

次に、gemを次のように更新します。

後で指定できるディレクトリ(例:ハードドライブCのルート)にファイルをダウンロードしてください。

次に、コマンドプロンプトを使用します。

C:\>gem install --local C:\rubygems-update-1.8.30.gem
C:\>update_rubygems --no-ri --no-rdoc

これで、バンドルのインストールはSSL証明書の検証エラーなしで成功します。

より詳しい説明はこちら



1

opensslを再インストールする必要がありました。

brew uninstall --force openssl
brew install openssl

1

私は最近この問題に直面し、ここで説明されている手順に従いました。正しいOpenSSL証明書を指定していない可能性があります。実行後:

rvm osx-ssl-certs status all
rvm osx-ssl-certs update all

そして

export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

バンドルが完全に実行されました!


1

rubygems-update-2.6.7.gemをダウンロード ます。

次に、コマンドプロンプトを使用します。

C:\>gem install --local C:\rubygems-update-2.6.7.gem
C:\>update_rubygems --no-ri --no-rdoc

この後gem --version、新しい更新バージョンを報告する必要があります。

rubygems-update gemを安全にアンインストールできるようになりました。

C:\>gem uninstall rubygems-update -x
Removing update_rubygems
Successfully uninstalled rubygems-update-2.6.7

1

SSL証明書が内部認証局によって信頼されているソースからgemを取得している場合(または、SSLインスペクションを使用して会社のWebプロキシ経由で外部ソースに接続している場合)、SSL_CERT_FILE環境変数に証明書チェーンを指定します。 。ほとんどの場合、証明書ストア(macOSのシステムキーチェーン)からシェルからアクセス可能な場所にルート証明書をエクスポートする必要があります。

export SSL_CERT_FILE=~/RootCert.pem

0

使用している場合 rails-assets

あなたがhttps://rails-assets.org/あなたの資産を管理するのに使っていたなら、答えはあなたを助けません。に変換してもhttp役に立ちません。

最も簡単な修正は、代わりにこのソースを使用することです http://insecure.rails-assets.org。これは彼らのホームページで言及されています。


0

レガシーWindowsシステムとruby 1.9バージョンで私のために働いた唯一のものは、からcacertファイルをダウンロードすることです http:

そして、バンドルインストールを実行する前に以下のコマンドを実行します

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