pemasangan bundel gagal dengan kesalahan verifikasi sertifikat SSL

264

Ketika saya menjalankan bundle installuntuk proyek Rails 3 saya di Centos 5.5 gagal dengan kesalahan:

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.

Ketika saya mencoba menginstal permata secara manual (oleh gem install multi_json -v '1.3.2') itu berfungsi. Masalah yang sama terjadi dengan beberapa permata lainnya. Saya menggunakan RVM (1.12.3), ruby ​​1.9.2, bundler 1.1.3.

Bagaimana memperbaikinya?

mrzasa
sumber
Menghadapi masalah yang sama. Tetapi dengan permata lain: Gem :: RemoteFetcher :: FetchError: SSL_connect kembali = 1 errno = 0 status = SSLv3 membaca server sertifikat B: verifikasi sertifikat gagal ( bb-m.rubygems.org/gems/activeresource-3.2.3.gem )
Sathish
4
Saya mengalami kesalahan yang sama dengan keadaan yang sama. Saya menduga, mengingat tanggapan-tanggapan lain ini, bahwa ini adalah masalah sisi server.
asfallows
Saya punya masalah yang sama di Rails 5. Memperbaikinya dengan menambahkan source "https://rubygems.org''Gemfile dan menjalankan 'gem update --system'. Anda dapat menemukan info lebih lanjut di sini .
Nesha Zoric
Nesha, perbaikan itu berhasil untuk saya. Terima kasih!
Martin Marino

Jawaban:

310

Memperbarui

Sekarang saya sudah karma wh..err cukup ditambang dari jawaban ini semua orang harus tahu bahwa ini harus diperbaiki.

re: via Ownatik lagi pemasangan bundel gagal dengan kesalahan verifikasi sertifikat SSL

gem update --system

Jawaban saya masih benar dan dibiarkan di bawah untuk referensi jika itu akhirnya tidak berhasil untuk Anda.


Jujur solusi sementara terbaik adalah

[...] gunakan rubygem versi non-ssl di gemfile Anda sebagai solusi sementara.

melalui pengguna Ownatik

apa yang mereka maksudkan adalah di bagian atas Gemfiledalam perubahan direktori aplikasi rel Anda

source 'https://rubygems.org'

untuk

source 'http://rubygems.org'

catatan bahwa versi kedua adalah http bukan http s

Akan
sumber
1
Saya menerima jawaban ini, karena itulah yang saya lakukan pada awalnya. Kemudian saya mengubah strategi penempatan saya. Sekarang saya menjalankan bundel aplikasi di server lain dan kemudian saya salin (dengan permata di vendordirektori) ke server yang saya tulis dalam pertanyaan.
mrzasa
6
Ini tidak berhasil untuk saya. Tautan yang disediakan oleh @fbernier di bawah memperbaikinya untuk saya.
Scott Fister
5
Ini tidak berfungsi. Menjalankan ini hanya memberikan hasil dari Latest version currently installed. Aborting. ide lain?
Matt Huggins
1
Dalam hal mengubah sumber, untuk orang yang lebih baru seperti saya. Saya akan menentukan bahwa file ini terletak di direktori aplikasi Anda. Saya mencari di direktori railsinstaller. Bagaimanapun, saya mengubah sumbernya dan akhirnya berhasil. Saya mendapatkan kesalahan sertifikat ketika saya mencoba menjalankan pembaruan :(
Brian
2
gem update --systemgagal dengan kesalahan sertifikat yang sama persis: \
BlueRaja - Danny Pflughoeft
226

Ganti sumber permata ssl dengan non-ssl sebagai solusi temp:

StuR
sumber
8
OMG bekerja seperti pesona! Saya menggunakan Windows 7 x64 di belakang proxy perusahaan. Terima kasih banyak!
Șerban Ghiță
14
Saya terkejut ini bukan peringkat yang lebih tinggi, ini adalah perbaikan cepat yang paling mudah.
hwatkins
3
solusi temp yang baik ... perhatikan hal-hal berikut :: RubyGems telah dikonfigurasikan untuk melayani permata melalui URL berikut melalui sejarahnya: * gems.rubyforge.org (RubyGems 1.3.6 dan yang lebih lama) * rubygems.org (RubyGems 1.3. 7 hingga 1.8.25) * rubygems.org (RubyGems 2.0.1 dan yang lebih baru)
beauXjames
1
solusi tercepat untuk saya di Windows 8
Tisch
3
Bahkan ini seharusnya tidak dianggap sebagai jawaban yang valid, karena membuka sistem Anda untuk serangan dari luar.
rubiii
160

Alasannya adalah rubygems tua. Anda perlu memperbarui bagian sistem menggunakan sumber non ssl terlebih dahulu:

gem update --system --source http://rubygems.org/ (sementara memperbarui bagian sistem menggunakan koneksi non-ssl).

Sekarang Anda siap digunakan gem update.

Alexander.Iljushkin
sumber
5
Solusi yang sangat sederhana dengan cross-platform dan memungkinkan RubyGems untuk mengurus perinciannya. Bagus.
Zrisher
2
ini adalah salah satu yang harus diterima, jawaban di atas tidak menjelaskan bahwa Anda perlu menghapus sumber ssl terlebih dahulu
Ephraim
1
Terima kasih - ini tiketnya. Jika Anda mendapatkan pesan "tidak ada dalam cache" saat menambahkan atau menghapus sumber, coba dengan atau tanpa garis miring. Itu harus sama persis.
Timothy Lee Russell
1
Saya telah mencari melalui banyak solusi. Ini adalah yang bekerja seperti pesona. Terima kasih! Ini harus dipilih sebagai solusi sejati.
Berker Yüceer
1
Terima kasih!! Saya setuju dengan orang lain bahwa ini harus menjadi jawaban yang diterima, karena tidak menghasilkan Anda mengambil permata melalui HTTP biasa.
Alexander
117

Jika Anda menggunakan mac dan menggunakan versi terbaru RVM (~ 1.20), perintah berikut ini berfungsi untuk saya.

rvm osx-ssl-certs update
chaserx
sumber
Terima kasih! Bekerja untuk saya di Mac OSX 10.8.5
Matthew Blancarte
Terima kasih, bekerja untuk saya juga. Saya mencoba menginstal CocoaPods. rvm 1.22.15, OS X 10.8.5
Logan Moseley
1
Ini juga ditunjukkan dalam pesan kesalahan "... lihat bit.ly/ruby-ssl".
IAmNaN
Terima kasihsssss !! Bekerja untukku !! \ o /
Valter Júnior
55

Masalah ini sekarang harus diperbaiki. Perbarui rubygems ( gem update --system), pastikan openssl berada pada versi terbaru pada OS Anda, atau coba kiat-kiatnya yang masih belum berfungsi: http://railsapps.github.com/openssl-certificate-verify-failed.html

lebih cepat
sumber
1
Diperlukan untuk memperbarui bundler juga untuk membuatnya bekerja (rubygems 2.0.3 + bundler 1.3.2 + cygwin openssl 1.0.1e bekerja untuk saya di winxp).
fakeleft
Saya harus memperbarui dari 1.3.0, sekarang saya di 1.3.4 dan https tidak lagi melemparkan kesalahan: bundler-1.3.0 / lib / bundler / vendor / net / http / persistent / ssl_reuse.rb: 70: di `connect ': SSL_connect dikembalikan = 1 errno = 0 state = SSLv3 baca kunci server exchange B: ecpoint buruk (OpenSSL :: SSL :: SSLError)
Jon Kern
3
Tidak mungkin memperbarui rubygems jika sertifikat SSL tidak diterima! Berlari berputar
putar
50

Solusi sementara (seperti disinggung oleh Ownatik):

Buat atau modifikasi file bernama .gemrc di jalur beranda Anda, termasuk baris :ssl_verify_mode: 0

Ini akan mencegah bundler memeriksa sertifikat SSL permata ketika mencoba menginstalnya.

Untuk * nix devices, 'home path' berarti ~/.gemrc. Anda juga dapat membuat /etc/gemrcjika Anda mau. Untuk Windows XP, 'home path' berarti c:\Documents and Settings\All Users\Application Data\gemrc. Untuk Windows 7,C:\ProgramData\gemrc

asfallows
sumber
3
%USERPROFILE%\.gemrcjuga dicari oleh gemdi Windows.
Rômulo Ceccon
1
Lokasi file yang disarankan untuk Windows 8?
user1318135
6
Menghapus verifikasi ssl adalah solusi sementara yang membuka lubang keamanan. Baca lebih lanjut di sini: github.com/rubygems/rubygems/commit/…
mrm
Ini berguna dalam kasus saya; di belakang firewall perusahaan yang membatasi semua file terkompresi tetapi memungkinkannya melalui https.
mydoghasworms
Tidak mencoba solusi ini, tetapi dalam kasus saya juga berfungsi ketika saya menambahkan konten ini ke ~/.gemrc::sources: - http://rubygems.org
Artur Käpp
18

Pada windows7, Anda dapat mengunduh file cacert.pem dari sini dan mengatur SSL_CERT_FILE yang dapat diubah dengan lingkungan ke jalur tempat Anda menyimpan sertifikat, mis.

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

atau Anda dapat mengatur variabel dalam skrip Anda seperti ini ENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"

Ganti <username> dengan nama pengguna Anda sendiri.

Peter
sumber
3
Terima kasih. Perbaikan permanen ada di sini. guides.rubygems.org/ssl-certificate-update
Maheshkumar
Ini adalah perbaikan permanen yang tepat, dan menghindari menggunakan sumber http tidak aman.
Dio Phung
15

Solusi nyata untuk masalah ini, jika Anda menggunakan RVM:

  1. Perbarui rubygems: gem update --system
  2. Gunakan RVM untuk menyegarkan sertifikat SSL: rvm osx-ssl-certs update all

Kiat tip untuk tip ini pada proyek RailsApps !

Alan H.
sumber
1
rvm osx-ssl-certs update allbekerja dengan baik untuk saya. Tidak perlu melakukan langkah 1.
DMH
7

Bagi Anda yang memiliki ruby ​​diinstal melalui RVM dan ingin perbaikan cepat (lebih suka tidak membaca per permintaan Bruno) coba saja ini:

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

Untuk lebih jelasnya, inilah tautan tempat saya menemukan solusinya.

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

BTW, saya tidak harus menyentuh sertifikat saya di Ubuntu.

Yang terbaik dari semuanya, ini bukan solusi. Ini akan mengunduh permata melalui SSL dan gagal jika ada jika ada masalah seperti pria di serangan tengah yang jauh lebih baik daripada hanya mematikan keamanan.

danielrussia
sumber
Halaman yang Anda tautkan memiliki "solusi" (pertama) dan kemudian solusi yang tepat. Akan lebih baik jika jawaban Anda menyatakan itu sedikit lebih jelas. Namun demikian, menggunakan sertifikat CA (melalui cacert.pematau $rvm_path/usr/ssl) memang cara yang tepat untuk pergi.
Bruno
1
Bruno, solusinya mungkin akan sedikit berbeda tergantung pada apa rasa Unix yang digunakan orang tersebut. Sepertinya membaca tautan akan diperlukan.
danielrussia
Saya hanya berbicara tentang perbedaan antara "solusi" pada halaman ( :ssl_verify_mode: 0, yang membuka masalah), yang bertentangan dengan salah satu dari 3 solusi di bawahnya, yang merupakan cara yang tepat untuk memperbaiki masalah ini.
Bruno
@ Bruno, saya telah merevisi artikel saya, silakan tambahkan komentar atau edit wiki jika Anda melihat kemungkinan untuk perbaikan.
Daniel Kehoe
6

Ini sudah diperbaiki

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

Sekarang RubyGems 2.6.x telah dirilis, Anda dapat memperbarui ke versi ini secara manual.

Unduh https://rubygems.org/downloads/rubygems-update-2.6.7.gem

Silakan unduh file di direktori yang nantinya bisa Anda tunjuk (mis. Akar harddisk Anda C :)

Sekarang, gunakan Command Prompt Anda:

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

Setelah ini, gem --version harus melaporkan versi pembaruan yang baru.

Anda sekarang dapat menghapus permata pembaruan rubygems dengan aman:

C:\>gem uninstall rubygems-update -x
Roffers
sumber
5

Petunjuk copy paste sederhana yang diberikan di sini tentang file .pem

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

Untuk verifikasi sertifikat gagal

Jika Anda sudah membaca bagian sebelumnya, Anda akan tahu apa artinya ini (dan memalukan> jika Anda belum).

Kita perlu mengunduh AddTrustExternalCARoot-2048.pem . Buka Prompt Perintah dan ketik:

C:> permata yang rubygems C: /Ruby21/lib/ruby/2.1.0/rubygems.rb Sekarang, mari cari direktori itu. Dari dalam jendela yang sama, masukkan bagian path ke ekstensi file, tetapi gunakan backslash sebagai gantinya:

C:> mulai C: \ Ruby21 \ lib \ ruby ​​\ 2.1.0 \ rubygems Ini akan membuka jendela Explorer di dalam direktori yang kami indikasikan.

Langkah 3: Salin sertifikat kepercayaan baru

Sekarang, cari direktori ssl_certs dan salin file .pem yang kami peroleh dari langkah sebelumnya di dalam.

Itu akan terdaftar dengan file lain seperti GeoTrustGlobalCA.pem.

geniushkg
sumber
4

masalah yang sama tetapi dengan permata berbeda di sini:

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.

solusi sementara: gem install builder -v '3.0.0'memungkinkan untuk melanjutkanbundle install

Ludwig
sumber
7
Anda juga dapat menggunakan rubygem versi non-ssl di gemfile Anda sebagai solusi sementara.
fbernier
1
Saya berhasil dan berhasil. Untuk saat ini, itu solusi yang memadai.
mrzasa
Saya memiliki masalah yang sama di sini. Jadi @Ownatik bagaimana cara menggunakan rubygems versi ssl?
Zeck
4

Solusi paling sederhana:

rvm pkg install openssl
rvm reinstall all --force

Voila!

pengguna2886774
sumber
2
Apa yang sebenarnya dilakukan oleh sistem saya?
Bradley Flood
4

Perbaikan permanen saya untuk Windows:

  1. Unduh CACert , simpan C:\ruby\ssl_certs\GlobalSignRootCA.pemdari http://guides.rubygems.org/ssl-certificate-update/

  2. Buat variabel sistem bernama " SSL_CERT_FILE ", setel ke C:\ruby\ssl_certs\GlobalSignRootCA.pem.

  3. Coba lagi 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
Dio Phung
sumber
3

Saya mendapatkan kesalahan yang sedikit berbeda, meskipun mungkin terkait, di 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.

Itu terjadi ketika saya menjalankan bundle installdengan source 'https://rubygems.org'Gemfile.

Ini adalah masalah dengan OpenSSL di Ubuntu 12.04. Lihat masalah Rubygems # 319 .

Untuk mengatasinya, jalankan apt-get update && apt-get upgradedi Ubuntu 12,04 untuk meningkatkan OpenSSL Anda.

Jo Liss
sumber
3

Saya bisa melacak ini ke fakta bahwa binari itu rvm diunduh tidak bermain bagus dengan OpenSSL OS X, yang sudah tua dan tidak lagi digunakan oleh OS.

Solusi bagi saya adalah memaksa kompilasi ketika menginstal Ruby melalui rvm:

rvm reinstall --disable-binary 2.2
Schrockwell
sumber
Ini berhasil untuk saya. Anda perlu mengganti "2.2" dengan versi ruby ​​yang Anda gunakan
Josh
3

Terima kasih kepada @ Alexander.Iljushkin untuk:

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

Setelah itu bundler masih gagal dan solusi untuk itu adalah:

gem install bundler

Sebastian Axe
sumber
2

Saya mendapatkan kesalahan serupa. Inilah cara saya mengatasi ini: Di ​​direktori jalur Anda, periksa Gemfile. Edit sumber di gemfile ke http alih-alih https dan simpan. Ini mungkin menginstal bundler tanpa masalah sertifikat SSL.l

ecksor5
sumber
2

Untuk mesin Windows, periksa versi permata Anda dengan

gem --version

Kemudian perbarui permata Anda sebagai berikut:

Silakan unduh file di direktori yang nantinya bisa Anda tunjuk (mis. Root dari hard drive Anda C :)

Sekarang, gunakan Command Prompt Anda:

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

Sekarang, pemasangan bundel akan berhasil tanpa kesalahan verifikasi sertifikat SSL.

Instruksi lebih rinci ada di sini

KBIIX
sumber
1

Ini bekerja untuk saya:

  • unduh permata terbaru di https://rubygems.org/pages/download
  • instal permata dengan gem install --local [path to downloaded gem file]
  • perbarui permata dengan update_rubygems
  • periksa apakah Anda menggunakan versi permata terbaru gem --version
Guy Chauliac
sumber
1

Saya harus menginstal ulang openssl:

brew uninstall --force openssl
brew install openssl
kesedihan
sumber
1

Saya baru saja menghadapi masalah ini dan mengikuti langkah-langkah yang dijelaskan di sini . Mungkin ada kemungkinan Anda tidak menunjuk ke sertifikat OpenSSL yang tepat. Setelah berlari:

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

dan

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

bundel selesai berlari!

jshaf
sumber
1

Unduh rubygems-update-2.6.7.gem .

Sekarang, gunakan Command Prompt Anda:

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

Setelah ini, gem --versionharus melaporkan versi pembaruan yang baru.

Anda sekarang dapat menghapus permata pembaruan rubygems dengan aman:

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

Untuk diketahui, jika Anda mengambil permata dari sumber yang sertifikat SSL dipercaya oleh otoritas sertifikat internal (atau Anda terhubung ke sumber eksternal melalui proxy web perusahaan dengan inspeksi SSL), arahkan variabel env SSL_CERT_FILE Anda ke rantai sertifikat Anda . Ini kemungkinan besar hanya membutuhkan ekspor sertifikat root Anda dari toko sertifikat Anda (Sistem Keychain pada macOS) ke lokasi yang dapat diakses dari shell Anda yaitu:

export SSL_CERT_FILE=~/RootCert.pem
paling suka
sumber
0

Jika Anda menggunakan rails-assets

Jika Anda menggunakannya https://rails-assets.org/untuk mengelola aset Anda, tidak ada jawaban yang akan membantu Anda. Bahkan mengonversi ke httptidak akan membantu.

Perbaikan paling sederhana menggunakan sumber ini sebagai gantinya http://insecure.rails-assets.org,. Ini telah disebutkan di beranda mereka .

Anwar
sumber
0

Satu-satunya hal yang bekerja untuk saya pada sistem legacy windows dan versi ruby ​​1.9 adalah mengunduh file cacert dari http://guides.rubygems.org/ssl-certificate-update/

Dan kemudian jalankan perintah di bawah ini sebelum menjalankan bundle install

bundle config --global ssl_ca_cert /path/to/file.pem
Aleksandar Pavić
sumber