Centos 5.5でRails 3プロジェクトに対してbundle install
を実行すると、エラーで失敗します。
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を手動で(gem install multi_json -v '1.3.2'
によって)インストールしようとするとうまくいきます。同じ問題が他のいくつかの宝石でも起こります。私はRVM(1.12.3)、Ruby 1.9.2、bundler 1.1.3を使っています。
それを修正するには?
更新
私はカルマを使っています…この答えから十分に採掘されたので、みんなこれが修正されたはずだということを知っておくべきです。
re:Ownatik経由で バンドルインストールがSSL証明書検証エラーで失敗する
gem update --system
それでもあなたのために働かないことになったら私の答えはまだ正しいので参考のために下に残しました。
正直なところ最高の一時的な解決策は
[...]一時的な回避策として、gemfileで非SSLバージョンのrubygemsを使用してください。
ユーザーOwnatik経由
それらが意味するものはあなたのRailsアプリケーションディレクトリの変更の中のGemfile
の上にあります
source 'https://rubygems.org'
に
source 'http://rubygems.org'
2番目のバージョンはhttpの代わりにhttpであることに注意してください。s
一時的な解決策としてssl gem sourceをnon-sslに置き換えます。
その理由は古いルビゲムです。最初に非SSLソースを使用してシステム部分を更新する必要があります。
gem update --system --source http://rubygems.org/
(非SSL接続を使用してシステム部分を一時的に更新する)。
これでgem update
を使う準備ができました。
あなたがMacを使っていてRVMの最新版(〜1.20)を使っているのであれば、次のコマンドが役に立ちました。
rvm osx-ssl-certs update
この問題は修正されるはずです。 rubygems(gem update --system
)を更新する、あなたのOS上でopensslが最新版であることを確かめる、あるいはそれでもまだうまくいかないというヒントを試してください: http://railsapps.github.com/openssl-certificate-verify -failed.html
一時的な解決策(Ownatikが示唆しているように):
ホームパスに.gemrcという名前のファイルを作成または変更します(:ssl_verify_mode: 0
行を含む)。
これにより、バンドラーがgemのSSL証明書をインストールしようとしたときにそれらをチェックできなくなります。
* nixデバイスの場合、「ホームパス」は~/.gemrc
を意味します。お望みなら/etc/gemrc
を作成することもできます。 Windows XPの場合、「ホームパス」はc:\Documents and Settings\All Users\Application Data\gemrc
を意味します。 Windows 7の場合、C:\ProgramData\gemrc
Windows 7では、cacert.pemファイルを こちら からダウンロードして、環境変数SSL_CERT_FILEを証明書を保存するパスに設定します。
SET SSL_CERT_FILE="C:\users\<username>\cacert.pem"
スクリプトの中でこのように変数を設定することもできますENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"
<username>を自分のユーザー名に置き換えます。
RVMを使用している場合、この問題に対する本当の解決策は以下のとおりです。
gem update --system
rvm osx-ssl-certs update all
RailsAppsプロジェクトでのこのヒント のヒント !
RVMを介してRubyをインストールしていて、(Brunoの要求に従って読んではいけないことを望んでいる)素早い修正が欲しい人のために、これを試してみてください。
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を介して宝石をダウンロードし、セキュリティをオフにするよりもはるかに優れている中間者攻撃のような問題がある場合には失敗します。
これは修正されました
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
CA証明書のリストは、curlのWebサイト http://curl.haxx.se/ca/cacert.pem からダウンロードできます。
それからSSL_CERT_FILE環境変数を設定してRubyにそれを使用するように指示します。たとえば、Linuxの場合:
$ SSL_CERT_FILE=~/cacert.pem bundle install
.pemファイルについての簡易コピーの貼り付け方法
https://Gist.github.com/luislavena/f064211759ee0f806c88
証明書の検証に失敗しました
前のセクションを読んだことがあれば、これが何を意味するのかがわかります(そうでない場合は恥>)。
AddTrustExternalCARoot-2048.pem をダウンロードする必要があります。コマンドプロンプトを開き、次のように入力します。
C:> gem which rubygems C:/Ruby21/lib/Ruby/2.1.0/rubygems.rbそれでは、そのディレクトリを探しましょう。同じウィンドウ内から、ファイル拡張子までのパス部分を入力しますが、代わりにバックスラッシュを使用します。
C:> start C:\ Ruby21\lib\Ruby\2.1.0\rubygemsこれで、指定したディレクトリ内にエクスプローラウィンドウが開きます。
ステップ3:新しい信頼証明書をコピーする
次に、ssl_certsディレクトリを見つけて、前の手順で取得した.pemファイルをコピーします。
GeoTrustGlobalCA.pemのような他のファイルと一緒にリストされます。
これは、Windows上でこの問題を解決する方法です。
.permファイルをダウンロードしてから、コマンドプロンプトでSSL_CERT_FILEを設定します。
最も簡単な解決策:
rvm pkg install openssl
rvm reinstall all --force
ほら!
同じ問題ですが、宝石が異なります。
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
Windows用の私の永久的な修正:
CACert をダウンロードし、 http://guides.rubygems.org/ssl-certificate-updateからC:\Ruby\ssl_certs\GlobalSignRootCA.pem
として保存します。 /
"SSL_CERT_FILE"というシステム変数を作成し、C:\Ruby\ssl_certs\GlobalSignRootCA.pem
に設定します。
もう一度試してください。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
のための@ Alexander.IljushkinへのTHX:
gem update --system --source http://rubygems.org/
そのバンドラーがまだ失敗した後、その解決策は次のとおりです。
gem install bundler
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 を参照してください。
これを修正するには、Ubuntu 12.04でapt-get update && apt-get upgrade
を実行してOpenSSLをアップグレードします。
私はrvm
がダウンロードするバイナリが、古くてOSによって使われなくなったOS XのOpenSSLとうまくいかないという事実にこれを追跡することができました。
私にとっての解決策は、rvm
経由でRubyをインストールするときにコンパイルを強制することでした。
rvm reinstall --disable-binary 2.2
私は同様のエラーを受けていました。これは私がこれを解決した方法です:あなたのパスディレクトリで、Gemfileをチェックしてください。 gemファイルのソースをhttpsの代わりにhttpに編集して保存します。これにより、SSL証明書を発行せずにバンドラーをインストールすることができます。
Windowsマシンの場合は、gemのバージョンを確認してください。
gem --version
それから次のようにあなたの宝石を更新してください。
あなたが後で指すことができるディレクトリ(例えば、あなたのハードドライブC:のルート)にファイルをダウンロードしてください
今、あなたのコマンドプロンプトを使用して:
C:\>gem install --local C:\rubygems-update-1.8.30.gem
C:\>update_rubygems --no-ri --no-rdoc
これで、SSL証明書の検証エラーなしでバンドルのインストールが成功します。
より詳しい説明は こちら
これは私のために働いた:
gem install --local [path to downloaded gem file]
でgemをインストールしてくださいupdate_rubygems
で宝石を更新しますgem --version
で最新のgemバージョンを使っていることを確認してください私はつい最近この問題に直面し、ここで概説された ステップに従った 。正しいOpenSSL証明書を指していない可能性があります。実行後:
rvm osx-ssl-certs status all
rvm osx-ssl-certs update all
そして
export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
完全なバンドルが実行されました。
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
私はopensslを再インストールしなければなりませんでした:
brew uninstall --force openssl
brew install openssl
注意してほしいのは、内部の認証局によって信頼されているSSL証明書をソースから取得している場合(またはSSL検査で会社のWebプロキシを介して外部のソースに接続している場合)です。 。これはおそらくあなたの証明書ストア(macOS上のシステムキーチェーン)からあなたのShellからアクセス可能な場所にあなたのルート証明書をエクスポートすることを必要とするだけです。
export SSL_CERT_FILE=~/RootCert.pem
私のためにレガシーウィンドウシステムとRuby 1.9バージョンで働いていた唯一のことは http://guides.rubygems.org/ssl-certificate-update/ からcacertファイルをダウンロードすることです
そしてバンドルインストールを実行する前に以下のコマンドを実行します
bundle config --global ssl_ca_cert /path/to/file.pem
Rails-assets
を使っているのならあなたがあなたの資産を管理するためにhttps://Rails-assets.org/
を使っていたならば、答えはあなたを助けません。 http
に変換しても役に立ちません。
最も簡単な解決策は、代わりにこのソースを使用することですhttp://insecure.Rails-assets.org
。これは彼らの ホームページ で言及されています。