Kesalahan SSL Saat memasang rubygems, Tidak dapat menarik data dari 'https://rubygems.org/

269

Saya mencoba melakukan tutorial Michael Hartl. Ketika saya mencoba menginstal rel 3.2.14 di gemset saya, saya mendapatkan masalah berikut:

$ gem install rails -v 3.2.14

GALAT: Tidak dapat menemukan 'rel' permata yang valid (= 3.2.14), inilah sebabnya:

Tidak dapat mengunduh data dari https://rubygems.org/ - SSL_connect kembali = 1 errno = 0 status = SSLv3 baca sertifikat server B: verifikasi sertifikat gagal ( https://s3.amazonaws.com/production.s3.rubygems.org /specs.4.8.gz )

Setelah Googling berkeliling, saya menemukan bahwa saya bisa menggunakan sumber non-SSL untuk rubygem jadi saya berlari:

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

Kemudian, ketika saya mencoba memasang rel lagi, ternyata berhasil. Namun, saya masih mendapatkan masalah di atas tetapi sebagai peringatan:

PERINGATAN: Tidak dapat menarik data dari ' https://rubygems.org/ ': SSL_connect kembali = 1 errno = 0 status = SSLv3 baca sertifikat server B: verifikasi sertifikat gagal ( https://s3.amazonaws.com/production.s3 .rubygems.org / specs.4.8.gz )

Bagaimana saya bisa menghapus peringatan / kesalahan ini sepenuhnya?

Saya menggunakan yang berikut ini:

  • rvm 1.22.15
  • ruby 2.0.0p247 (2013-06-27 revisi 41674) [x86_64-darwin12.3.0]
  • OSX 10.8.5
tpw
sumber
Itu hampir terlihat seperti kesalahan regresi. Saya perhatikan salah satu siswa saya memiliki masalah yang sama hari ini di OS X. Masih bekerja melalui masalah Ada pertanyaan terkait lainnya (identik?) Pada SO dari tahun lalu.
vgoff
Ini adalah bug yang dikenal dalam 2.0.*versi usang ( ) dari rubygems. Coba perbarui ke versi rubygems terbaru: gem update --systemdan kemudian jalankan kembali gem install.
Aleksei Matiushkin
Jika boleh memperbarui versi ruby ​​Anda, perbarui. Masalah ini diperbaiki pada versi ruby ​​yang lebih baru.
Hong
Setelah menambahkan sumber http, menjalankan gem sources -r https://rubygems.org/bekerja untuk saya (sejauh menghapus peringatan).
BrainSlugs83
Ada terlalu banyak jawaban panjang sementara ini dapat disortir dalam satu baris di Linux / Mac: stackoverflow.com/a/56993071/5689995
laimison

Jawaban:

382

Untuk pengguna RVM & OSX

Pastikan Anda menggunakan rvm terbaru:

rvm get stable

Maka Anda dapat melakukan dua hal:

  1. Perbarui sertifikat:

    rvm osx-ssl-certs update all
  2. Perbarui rubygems:

    rvm rubygems latest

Untuk pengguna non RVM

Temukan jalur untuk sertifikat:

cert_file=$(ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE')

Hasilkan sertifikat:

security find-certificate -a -p /Library/Keychains/System.keychain > "$cert_file"
security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain >> "$cert_file"

Seluruh kode: https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/osx-ssl-certs


Untuk pengguna non OSX

Pastikan untuk memperbarui paket ca-certificates. (pada sistem lama mungkin tidak tersedia - jangan gunakan sistem lama yang tidak lagi menerima pembaruan keamanan)

Catatan Windows

The Ruby Installer membangun untuk jendela disusun oleh Luis Lavena dan jalan menuju sertifikat akan menampilkan sesuatu seperti C:/Users/Luis/...cek https://github.com/oneclick/rubyinstaller/issues/249 untuk rincian lebih lanjut dan jawaban ini https://stackoverflow.com / a / 27298259/497756 untuk diperbaiki.

mpapis
sumber
Ada cara lain untuk memperbarui sertifikat jika Anda tidak menggunakan RVM?
Eduardo
Berlari rvm rubygems latestmengakibatkan kesalahan mengeluh tentang checksum yang hilang. Namun, hal-hal mulai bekerja tanpa itu juga ... tampaknya Anda bisa memaksakannya --verify-downloads 1jika perlu. Adakah ide mengapa itu terjadi? Itu mencoba untuk mengambil versirubygems-2.1.6
Timo
rvm hardcodes md5s untuk unduhan dalam kodenya, saya baru saja menambahkannya ke headversi dan akan stablesegera dirilis .
mpapis
2
Saya menjalankannya di windows dan mendapatkan path yang bahkan tidak ada di komputer saya "C: /Users/Luis/Code/openknapsack/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0k/ssl /cert.pem "Tidak ada pengguna yang bernama Luis juga. Apa apaan?
isimmons
3
Ada saran untuk pengguna Mac Mojave? Berlari kepermission denied: /private/etc/ssl/cert.pem
Chandrew
241

Temuan terbaru ...

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

Paling penting ... unduh https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

Cari tahu di mana harus menempelnya

C:\>gem which rubygems
C:/Ruby21/lib/ruby/2.1.0/rubygems.rb

Kemudian cukup salin file .pem di ../2.1.0/rubygems/ssl_certs/ dan lanjutkan tentang bisnis Anda.

beauXjames
sumber
8
Pastikan untuk menyimpan dengan .pemekstensi, bukan .pem.txt!
Dan Dascalescu
3
Bagaimana jika itu tidak berhasil? Saya melakukan seperti jawaban Anda katakan, tetapi saya masih mendapatkan kesalahan! 1) Saya mendapat file AddTrustExternalCARoot-2048.pem, 2) Saya menempatkan file ke C:\Ruby193\lib\ruby\1.9.1\rubygems\ssl_certs, 3) Saya menjalankan gem install susydan mendapatkan kesalahan yang samaUnable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Hijau
coba perbarui instal Ruby Anda ... intisari ini tidak menjamin kompatibilitas ke belakang dengan versi Anda
beauXjames
1
Beberapa catatan tentang tautan luis lavena yang Anda berikan. Anda mungkin ingin menginstal rubygems dari file permata alih-alih file zip yang disebutkannya. Saya belum menemukan perintah untuk menginstal dari permata atau file zip yang belum dibongkar. Permata di sini - rubygems.org/pages/download . Perintahnya adalah -gem install --local C:\Downloads\rubygems-update-2.4.5.gem
Erran Morad
9
tautan unduhan tidak berlaku lagi. Bagi Anda yang masih menghadapi masalah ini, lihat jawaban Dheerendra untuk sebuah solusi
Llama.new
174

Untuk pengguna windows

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

  1. Unduh file zip terbaru (Dalam kasus saya 2.4.5)
  2. Buka zipnya
  3. jalankan "ruby setup.rb" di folder unzipped
  4. sekarang jalankan perintah install permata
Dheerendra Kulkarni
sumber
1
Bekerja untuk saya di Windows 8.1, Ruby 2.0.0. Bersulang.
Yi Zeng
7
Solusi terbaik untuk Pengguna Windows
Sorin Haidau
1
Jauh lebih mudah daripada alternatif untuk Windows yang tercantum dalam jawaban lain, dan bekerja dengan baik pada Windows 7 64-bit. Terima kasih!
Gurgadurgen
1
Ini tidak berhasil untuk saya. Devkit tidak kompatibel dengan versi terbaru dari ruby ​​di windows 7
roo2
2
Bekerja untuk saya di Windows 10 dan Ruby 2.1.0. Terima kasih!
MSC
54

Jika Anda ingin menggunakan sumber non-SSL, coba hapus sumber HTTPS terlebih dahulu, lalu tambahkan satu HTTP:

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

MEMPERBARUI:

Sebagai negara mpapis, ini harus digunakan hanya sebagai solusi sementara. Mungkin ada beberapa masalah keamanan jika Anda mengakses RubyGems melalui sumber non-SSL.

Setelah solusi tidak diperlukan lagi, Anda harus mengembalikan sumber SSL:

sudo gem sources -r http://rubygems.org
sudo gem sources -a https://rubygems.org
Eduardo
sumber
tidak turun voting karena ini memecahkan masalah langsung ini, tetapi ia meninggalkan ruby ​​Anda dengan sertifikat lama yang masih buruk
mpapis
1
Saya memperbarui jawaban untuk mencoba memperjelas bahwa ini hanyalah solusi untuk masalah root. Hanya mencoba untuk mengatasi masalah Terin ketika dia mencoba menggunakan sumber non-SSL.
Eduardo
5
FYI, saya harus lakukan sudo gem sources -r https://rubygems.org/dan sudo gem sources -r http://rubygems.org/. Perhatikan jejaknya /.
Ross Rogers
Ya itu mungkin. Saya pikir itu tergantung pada cara sumber itu ditambahkan di tempat pertama. Maksud saya, jika sumber ditambahkan dengan trailing /, itu juga harus dihapus dengan trailing /.
Eduardo
Satu-satunya solusi yang berhasil bagi saya untuk mengunduh permata fu @ ^! #. Terima kasih banyak!
Genarito
16

Pada Windows Anda harus menggunakan HTTPsumber untuk memperbarui gemlalu kembali menggunakan 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/

Sunting: Peringatan Saya tidak yakin apakah ini aman . Apakah ada yang tahu jika paket ruby ​​ditandatangani? Jawaban yang diterima tampak seperti solusi yang lebih baik.

roo2
sumber
Terima kasih telah berbagi; sementara mengubah https ke http berhasil, tetapi saya perlu langsung mengubah gemfile.
Noha Kareem
2
Dalam kasus saya, saya memerlukan trailing / dengan https url.
Alwyn Schoeman
1
Sebagai pembaruan untuk jawaban ini, ada baiknya sebelum Anda mulai gem sources -lmelihat sumber Anda sebelum dan sesudah memperbarui sistem. Jika pembaruan gagal, tentukan nomor versi tepat setelah --sistem. Lihat rubygems.org/gems/rubygems-update/versions atau tanyakan rekan kerja untuk gem -vlaporan apa .
Gary S. Weaver
10

Untuk Pengguna Windows (dan mungkin orang lain)

Rubygems.org memiliki panduan yang tidak hanya menjelaskan cara memperbaiki masalah ini, tetapi juga mengapa begitu banyak orang mengalaminya: Pembaruan Sertifikat SSL Alasan masalah ini rubygems.org beralih ke sertifikat SSL yang lebih aman (SHA-2 yang gunakan enkripsi 256bit). Alat baris perintah rubygems menggabungkan referensi ke sertifikat yang benar. Karenanya rubygems itu sendiri tidak dapat diperbarui menggunakan versi rubygem yang lebih lama. Rubygems pertama-tama harus diperbarui secara manual.

Pertama cari tahu rubygems apa yang Anda miliki:

rubygems v

Bergantung pada apakah Anda memiliki 1.8.x, 2.0.x atau 2.2.x, Anda perlu mengunduh permata pembaruan, bernama “rubygems-update-XYZgem”, di mana XYZ adalah versi yang Anda butuhkan. Menjalankan 1.8.x: unduh: https://github.com/rubygems/rubygems/releases/tag/v1.8.30 Running 2.0.x: unduh: https://github.com/rubygems/rubygems/releases/tag/v2 .0.15 Menjalankan 2.2.x: unduh: https://github.com/rubygems/rubygems/releases/tag/v2.2.3

Instal pembaruan gem:

gem install –-local full_path_to_the_gem_file

Jalankan pembaruan gem:

update_rubygems --no-ri --no-rdoc

Periksa apakah rubygems telah diperbarui:

rubygems v

Copot pemasangan gem pembaruan:

gem uninstall rubygems-update -x

Pada titik ini, Anda mungkin baik-baik saja. Tetapi ada kemungkinan bahwa Anda tidak memiliki file kunci publik terbaru untuk sertifikat baru. Untuk melakukan ini:

Unduh sertifikat terbaru, (saat ini AddTrustExternalCARoot-2048.pem) dari https://rubygems.org/pages/download . Semua sertifikat juga ada di: https://github.com/rubygems/rubygems/tree/master/lib/rubygems/ssl_certs

Cari tahu di mana harus meletakkannya:

gem which rubygems

Letakkan file ini di direktori "rubygems \ ssl_certs" di lokasi ini.

Sesuai komitmen rubygems , sertifikat dipindahkan ke direktori yang lebih spesifik. Dengan demikian, saat ini sertifikat (AddTrustExternalCARoot-2048.pem) diharapkan berada di jalur berikutlib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

John Pankowicz
sumber
8

Coba gunakan situs web sumber untuk permata, yaitu rubygems.org. Gunakan http, bukan https. Metode ini tidak melibatkan pekerjaan apa pun seperti menginstal sertifikat dan semua itu.

Contoh -

gem install typhoeus --source http://rubygems.org

Ini bekerja, tetapi ada satu peringatan sekalipun.

Permata diinstal, tetapi dokumentasi bukan karena kesalahan sertifikat. Inilah kesalahan yang saya dapatkan

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)
Erran Morad
sumber
7

Berlari gem update --systembekerja untuk saya

pengguna3408293
sumber
6
Ini juga bekerja untuk saya, di Windows. Saya harus beralih sementara ke HTTP klasik, lalu memperbarui, lalu kembali ke SSL.
Tom Mayfield
1
KESALAHAN. SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
Hijau
permata sumber --hapus rubygems.org permata sumber -a rubygems.org permata pembaruan --system
Stefan Steiger
4

Pastikan jam sistem Anda benar

Kesalahan tepat ini terjadi pada saya hari ini di mesin virtual Ubuntu yang berjalan di VirtualBox. Saya mencoba sebagian besar solusi yang ditunjukkan di atas sebelum saya perhatikan bahwa saya telah kembali dari keadaan sangat lama, dan jam saya mati beberapa hari.

Memperbarui jam segera memperbaiki masalah saya. Inilah perintah yang saya gunakan dalam kasus saya:

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

pembuat bir
sumber
4

Cukup menghapus dan menginstal ulang openssl dengan homebrew memecahkan masalah ini untuk saya.

brew uninstall --force openssl

brew install openssl

ntj
sumber
1
Dengan versi homebrew yang lebih baru Anda mungkin perlu menjalankan perintah seperti ini: brew uninstall --ignore-dependencies openssl(yang setara dengan forcebendera lama )
Batkins
3

Untuk pengguna Fedora

Perbarui cert.pemfile terbaru yang disediakan oleh 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
ENDOH takanao
sumber
Apakah ada windows cmd atau PowerShell yang setara untuk ini?
Erran Morad
3

Jika Anda menggunakan windows, buka https://rubygems.org/ dengan internet explorer.

Klik pada informasi keamanan dan impor sertifikat. Intinya adalah rantai sertifikasi Anda sudah usang dan Anda perlu menambahkan sertifikat baru ini. Ingatlah bahwa ini bukan pelanggaran keamanan selama Anda dapat memvalidasi sertifikat yang tepercaya.

Paulo Fidalgo
sumber
Itu tidak membantu saya ... Apakah OpenSSL bahkan menggunakan toko sertifikat Windows?
Julien Ruffin
2

Dalam kasus saya, sertifikat CA CA sudah ketinggalan zaman. Saya memperbaikinya dengan menjalankan:

 sudo update-ca-certificates
orang gila
sumber
2

Pendekatan / satu-liner yang dapat diotomatisasi untuk mengunduh permata menggunakan HTTP alih-alih HTTPS:

printf -- '---\n:sources:\n- http://rubygems.org\n' | tee ~/.gemrc
laimison
sumber
Berfungsi sempurna jika Anda menemukan masalah dalam wadah buruh pelabuhan!
user7364588
1

Kasus khusus RubyGems (alat baris perintah) adalah bahwa ia harus membundel di dalam kode sertifikat kepercayaan, yang memungkinkan RubyGems untuk membuat koneksi dengan server bahkan ketika sistem operasi dasar tidak dapat memverifikasi identitas mereka.

Hingga beberapa bulan yang lalu, sertifikat ini diberikan oleh satu CA, tetapi sertifikat yang lebih baru disediakan oleh yang lain.

Karena itu, instalasi RubyGems yang ada harus diperbarui sebelum pergantian sertifikat dan berikan waktu yang cukup untuk perubahan menyebar (dan orang-orang memperbarui)

Siapa pun dapat menemukan solusinya dengan mengikuti langkah-langkah sederhana yang diberikan dalam tautan di bawah ini

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

ImranNaqvi
sumber
1

Mencoba

gem update --system

Semoga ini bisa menyelesaikan masalah.

puneet18
sumber
Bekerja untukku. Terima kasih. Ubuntu; Ruby diinstal dengan menggunakan apt install ruby.
Marslo
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
Jonathan
1

Unduh file cacert.pem dari http://curl.haxx.se/ca/cacert.pem . Simpan file ini ke C: \ RailsInstaller \ cacert.pem.

Sekarang beri tahu ruby ​​tentang bundel otoritas sertifikat Anda dengan menetapkan SSL_CERT_FILE. Untuk mengatur ini di sesi prompt perintah Anda saat ini, ketik:

set SSL_CERT_FILE = C: \ RailsInstaller \ cacert.pem

Shubham Kumar Gupta Ggps
sumber
0

Saya memiliki masalah yang sama ketika mencoba untuk menginstal permata mentimun. Namun saya perhatikan bahwa permata bundler sudah diinstal dengan ruby ​​2.0. Saya membuat Gemfile.rb di folder proyek dengan permata yang diperlukan dan mengikuti langkah-langkah ini

  1. Arahkan ke folder proyek
  2. Ketik bundel instal

Semua permata yang diperlukan terpasang.

pengguna3037926
sumber
0

Untuk Illumos / Solaris menggunakan pkgutil OpenCSW:

Instal sertifikat CSW sebelum 'permata instal'

pkgutil -yi CSWcacertificates

Jika Anda menggunakan kit ruby ​​yang bukan dari OpenCSW, versi ruby ​​Anda mungkin berharap menemukan file sertifikat di tempat lain. Dalam hal ini, saya cukup mengaitkan /etc/opt/csw/ssl/cert.pem OpenCSW ke tempat yang diharapkan.

Periksa di mana ruby ​​mengharapkan untuk menemukannya:

export cf=`ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE'` && echo $cf

Lalu, jika ada perbedaan, tautkan:

ln -s /etc/opt/csw/ssl/cert.pem $cf && file $cf
Yakub
sumber
0

Atau mungkin dicegah dengan firewall seperti saya. Coba ini:

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

Victor Choy
sumber
0

Untuk pengguna Windows:

Setelah menginstal Ruby 2.2.3 (+ rubygems 2.5.1) berhasil pada mesin uji dengan akses ke internet, saya mengalami kesalahan SSL ini ketika saya menginstal bundler pada mesin produksi, dalam jaringan.

Karena saya memiliki keterbatasan akses jaringan, dan tidak ada cara untuk mengubah pengaturan untuk akses SSL, dan berdasarkan pesan kesalahan, saya melakukan langkah-langkah di bawah ini untuk dapat menyelesaikan instalasi bundler (ini mungkin terdengar gila, tetapi itu bekerja...).

Melalui mesin dengan akses tidak terbatas ke internet, unduh file berikut:

Saya menambahkan file-file ini di server intranet, menjaga struktur folder dari tautan di atas:

  • $ INTRANET_HOME

spec.4.8.gz dan latest_specs.4.8.gz

  • $ INTRANET_HOME \ quick \ Marshal.4.8

bundler-1.11.2.gemspec.rz

  • $ INTRANET_HOME \ permata

bundler-1.11.2.gem

Lalu saya menambahkan intranet saya untuk mengakses sumber permata:

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

Saya telah berhasil menjalankan "gem install bundler" setelah instalasi, yang diperlukan hanyalah menghapus intranet permata saya:

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

Saya harap itu berguna dalam situasi serupa ....

Rogério Arantes
sumber
0

Sebagai pengguna Windows 10, saya mengikuti jawaban Dheerendra , dan itu berhasil pada suatu hari. Hari berikutnya, saya mengalami masalah lagi, dan perbaikannya tidak berhasil. Bagi saya, perbaikannya adalah memperbarui bundlerdengan:

gem update bundler

Saya percaya versi saya bundlersudah lebih dari beberapa bulan.

Alexander
sumber
0

Pastikan Anda telah menginstal ruby ​​dengan --disable-binary opsi , jika tidak, copot dan pasang kembali dengan opsi.

info lebih lanjut di sini

Feuda
sumber
0

Jawabannya tidak lagi valid. Karena saya mengalami masalah dengan ruby Windows yang lebih lama sekarang saya akan memposting jawabannya.

Ketika saya ingin menginstal permata activesupport:

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)

Langkah-langkah berikut hanya perlu menyalin sertifikat dari windows ruby ​​yang lebih baru. Ambil ruby ​​terbaru (atau setidaknya ruby 2.4.0 ) dan lakukan hal berikut:

salin sertifikat dari direktori ini (sesuaikan dengan kebutuhan Anda):
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

ke tujuan (sesuaikan lagi dengan yang Anda butuhkan):
C:\prg_sdk\rubies\Ruby231-p112-x64\lib\ruby\2.3.0\rubygems\ssl_certs

tukan
sumber