SSL Hatası rubygems yüklerken, 'https://rubygems.org/ adresinden veri alınamıyor


269

Michael Hartl öğreticisini yapmaya çalışıyorum. Gemime 3.2.14 rayları kurmaya çalıştığımda, aşağıdaki sorunu alıyorum:

$ gem kurulum rayları -v 3.2.14

HATA: Geçerli bir değerli taş 'rayı' bulunamadı (= 3.2.14), işte nedeni:

Https://rubygems.org/ adresinden veri indirilemiyor - SSL_connect döndürüldü = 1 errno = 0 durum = SSLv3 okuma sunucusu sertifikası B: sertifika doğrulaması başarısız oldu ( https://s3.amazonaws.com/production.s3.rubygems.org /specs.4.8.gz )

Google'da dolaştıktan sonra rubygems için SSL olmayan bir kaynak kullanabileceğimi buldum, bu yüzden koştum:

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

Sonra rayları tekrar takmaya çalıştığımda başarılı oldu. Ancak, hala yukarıdaki sorunu aldım ama bir uyarı olarak:

UYARI: ' https://rubygems.org/ ' adresinden veri alınamıyor : SSL_connect döndürüldü = 1 errno = 0 durum = SSLv3 sunucu sertifikası oku B: sertifika doğrulaması başarısız oldu ( https://s3.amazonaws.com/production.s3 .rubygems.org / specs.4.8.gz )

Bu uyarıyı / hatayı nasıl tamamen kaldırabilirim?

Aşağıdakileri kullanıyorum:

  • rvm 1.22.15
  • ruby 2.0.0p247 (2013-06-27 revizyon 41674) [x86_64-darwin12.3.0]
  • OSX 10.8.5

Neredeyse bir gerileme hatası gibi görünüyor. Öğrencilerimden birinin bugün OS X'te aynı problemi yaşadığını fark ettim. Hala sorun üzerinde çalışıyor. Geçen yıla ait SO ile ilgili başka sorular da (özdeş mi?) Var.
vgoff

Bu, eskimiş ( 2.0.*) sürümlerindeki bilinen bir hatadır rubygems. En son rubygems sürümüne güncellemeyi deneyin: gem update --systemve sonra yeniden çalıştırın gem install.
Aleksei Matiushkin

Ruby sürümünüzü güncellemeniz uygunsa güncelleyin. Bu sorun yeni ruby ​​sürümünde düzeltildi.
Hong

Http kaynağını ekledikten sonra, koşmak gem sources -r https://rubygems.org/benim için çalıştı (uyarıyı kaldırmak kadar).
BrainSlugs83

Bu, Linux / Mac'te bir satırda sıralanabilirken çok fazla uzun yanıt var: stackoverflow.com/a/56993071/5689995
laimison

Yanıtlar:


382

RVM ve OSX kullanıcıları için

En son rvm'yi kullandığınızdan emin olun:

rvm get stable

Sonra iki şey yapabilirsiniz:

  1. Sertifikaları güncelle:

    rvm osx-ssl-certs update all
  2. Güncelleme rubygems:

    rvm rubygems latest

RVM kullanıcısı olmayanlar için

Sertifika için yol bulma:

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

Sertifika oluştur:

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

Kodun tamamı: https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/osx-ssl-certs


OSX kullanıcısı olmayanlar için

Paketi güncellediğinizden emin olun ca-certificates. (eski sistemlerde mevcut olmayabilir - güvenlik güncelleştirmelerini artık almayan eski bir sistem kullanmayın)

Windows notu

Yakut Yükleyici pencere tarafından hazırlanmaktadır için inşa Luis Lavena ve sertifikaları yolu gibi bir şey gösteriyor olacak C:/Users/Luis/...çek https://github.com/oneclick/rubyinstaller/issues/249 fazla detay için ve bu cevap https://stackoverflow.com / a / 27298259/497756 düzeltmek için.


RVM kullanmıyorsanız sertifikaları güncellemenin başka bir yolu var mı?
Eduardo

Çalıştırılması rvm rubygems latest, eksik sağlama toplamı hakkında şikayetçi bir hatayla sonuçlandı. Bununla birlikte, işler o olmadan da çalışmaya başladı ... görünüşe göre --verify-downloads 1eğer gerekirse onu zorlayabilirsiniz . Bunun neden olabileceğine dair bir fikrin var mı? Sürümü almaya çalıştırubygems-2.1.6
Timo

rvm kodlarında indirmeler için md5s hardcodes, ben sadece onları headsürüme ekledim ve stableyakında çıkacak .
mpapis

2
Bunu pencerelerde çalıştırıyorum ve bilgisayarımda bile olmayan bir yol alıyorum "C: /Users/Luis/Code/openknapsack/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0k/ssl /cert.pem "Luis adında bir kullanıcı da yok. Ne oluyor be?
isimmons

3
Mac Mojave kullanıcıları için herhangi bir öneriniz var mı? Kaçmakpermission denied: /private/etc/ssl/cert.pem
Chandrew

241

Son bulgular ...

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

En önemlisi ... indir https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

Nereye yapıştırılacağını bul

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

Ardından .pem dosyasını ../2.1.0/rubygems/ssl_certs/ içine kopyalayın ve işinize devam edin.


8
.pemUzantı ile kaydettiğinizden emin olun , değil .pem.txt!
Dan Dascalescu

3
Ya işe yaramazsa? Cevapların söylediği gibi yaptım, ama yine de hatayı alıyorum! 1) Dosyam var AddTrustExternalCARoot-2048.pem, 2) Dosyayı yerleştirdim C:\Ruby193\lib\ruby\1.9.1\rubygems\ssl_certs, 3) gem install susyUnable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Green

Ruby yüklemenizi güncellemeyi deneyin ... bu
gist

1
Verdiğiniz luis lavena bağlantısı hakkında bazı notlar. Bahsedilen zip dosyaları yerine bir mücevher dosyasından rubygems yüklemek isteyebilirsiniz. Paketi açılmış bir mücevher veya zip dosyasından yüklemek için bir komut bulamadım. Mücevher burada - rubygems.org/pages/download . Komut -gem install --local C:\Downloads\rubygems-update-2.4.5.gem
Erran Morad

9
indirme bağlantısı artık geçerli değil. Hala bu sorunla karşı karşıya olanlar için, Dheerendra'nın bir çözüm cevabı
Llama.new

174

Windows kullanıcıları için

Bağlantıya git http://rubygems.org/pages/download

  1. En son zip dosyasını indirin (Benim durumumda 2.4.5)
  2. Sıkıştır
  3. sıkıştırılmamış klasörde "ruby setup.rb" komutunu çalıştır
  4. şimdi gem install komutunu çalıştırın

1
Windows 8.1, Ruby 2.0.0'da benim için çalıştı. Şerefe.
Yi Zeng

7
Windows Kullanıcıları için En İyi Çözüm
Sorin Haidau

1
Diğer yanıtlarda listelenen Windows alternatiflerinden çok daha kolay ve Windows 7 64 bit üzerinde mükemmel çalıştı. Teşekkürler!
Gurgadurgen

1
Bu benim için işe yaramıyor. Devkit, Windows 7'deki Ruby'nin en son sürümüyle uyumlu değil
Roo2

2
Windows 10 ve Ruby 2.1.0 üzerinde çalışıyor. Teşekkürler!
MSC

54

SSL olmayan kaynağı kullanmak istiyorsanız, önce HTTPS kaynağını kaldırmayı ve ardından HTTP kaynağını eklemeyi deneyin:

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

GÜNCELLEME:

Mpapis'in belirttiği gibi, bu sadece geçici bir geçici çözüm olarak kullanılmalıdır. SSL olmayan bir kaynak aracılığıyla RubyGems'e erişiyorsanız bazı güvenlik sorunları olabilir.

Geçici çözüm artık gerekli olmadığında, SSL kaynağını geri yüklemelisiniz:

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

Bu derhal bu sorunu
çözdüğü

1
Bunun kök sorunu için sadece bir çözüm olduğunu açıklığa kavuşturmaya çalışmak için cevabı güncelledim. SSL olmayan kaynağı kullanmaya çalıştığında Terin'in sorununu çözmeye çalıştım.
Eduardo

5
FYI, yapmam gerekiyordu sudo gem sources -r https://rubygems.org/ve sudo gem sources -r http://rubygems.org/. Sondaki noktalara dikkat edin /.
Ross Rogers

Evet, mümkün. Bence kaynak ilk etapta ekleme şekline bağlıdır. Demek istediğim, eğer kaynak sondaki ile eklenmişse, sondaki /ile de kaldırılmalıdır /.
Eduardo

Fu @ ^! # Gem'i indirmek için benim için çalışan tek çözüm. Çok teşekkür ederim!
Genarito

16

Windows'ta kullanmak gerekecek HTTPgüncellemek için kaynak gemsonra kullanmaya geri değiştirin 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/

Edit: Warning Bu güvenli olup olmadığından emin değilim . Yakut paketlerin imzalanıp imzalanmadığını bilen var mı? Kabul edilen cevap daha iyi bir çözüm gibi görünüyor.


Paylaşım için teşekkürler; https geçici olarak http için çalıştı çalıştı ama doğrudan gemfile değiştirmek gerekiyordu.
Noha Kareem

2
Benim durumumda bir sonda / https url ile ihtiyacım vardı.
Alwyn Schoeman

1
Bu yanıta bir güncelleme olarak, gem sources -lsistemi güncellemeden önce ve sonra kaynaklarınızı görmeye başlamadan önce iyi bir fikirdir . Güncelleme başarısız olursa, --sistemden hemen sonra bir sürüm numarası belirtin. Bkz. Rubygems.org/gems/rubygems-update/versions veya iş arkadaşınızdan hangi gem -vraporları isteyin .
Gary S. Weaver

10

Windows Kullanıcıları (ve belki diğerleri) için

Rubygems.org'un sadece bu sorunun nasıl çözüleceğini değil, aynı zamanda neden bu kadar çok insanın sahip olduğunu açıklayan bir kılavuzu vardır: SSL Sertifika Güncellemesi Sorunun nedeni rubygems.org'un daha güvenli bir SSL sertifikasına (SHA-2 256bit şifreleme kullanın). Rubygems komut satırı aracı referansı doğru sertifikaya ekler. Bu nedenle rubygems'in kendisi rubygems'in eski bir sürümü kullanılarak güncellenemez. Yakut taşlar önce manuel olarak güncellenmelidir.

Öncelikle hangi rubygems'e sahip olduğunuzu öğrenin:

rubygems v

1.8.x, 2.0.x veya 2.2.x sürümüne bağlı olarak, XYZ'nin ihtiyacınız olan sürüm olduğu “rubygems-update-XYZgem” adlı bir güncelleme mücevherini indirmeniz gerekir. Koşu 1.8.x: indir: https://github.com/rubygems/rubygems/releases/tag/v1.8.30 Koşu 2.0.x: indir: https://github.com/rubygems/rubygems/releases/tag/v2 .0.15 Koşu 2.2.x: indir: https://github.com/rubygems/rubygems/releases/tag/v2.2.3

Güncelleme gemini yükle:

gem install –-local full_path_to_the_gem_file

Güncelleme mücevherlerini çalıştır:

update_rubygems --no-ri --no-rdoc

Rubygems'in güncellendiğini kontrol edin:

rubygems v

Güncelleme gemini kaldır:

gem uninstall rubygems-update -x

Bu noktada, iyi olabilirsiniz. Ancak, yeni sertifika için en son ortak anahtar dosyasına sahip olmamanız mümkündür. Bunu yapmak için:

Https://rubygems.org/pages/download adresinden en son sertifikayı (şu anda AddTrustExternalCARoot-2048.pem) indirin . Tüm sertifikalar ayrıca şu adreste bulunur: https://github.com/rubygems/rubygems/tree/master/lib/rubygems/ssl_certs

Nereye koyacağınızı öğrenin:

gem which rubygems

Bu dosyayı bu konumdaki “rubygems \ ssl_certs” dizinine yerleştirin.

Gereğince rubygems işlemek , sertifikalar daha spesifik dizinleri taşınır. Bu nedenle, şu anda sertifikanın (AddTrustExternalCARoot-2048.pem) aşağıdaki yolda olması bekleniyorlib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem



8

Taşlar için kaynak web sitesini kullanmaya çalışın, yani rubygems.org. Https yerine http kullanın. Bu yöntem, certs kurulumları ve bunun gibi herhangi bir işi içermez.

Misal -

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

Bu işe yarıyor, ama yine de bir uyarı var.

Değerli taş yüklenir, ancak belgelendirme sertifika hataları nedeniyle değildir. İşte aldığım hata

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)

7

Koşmak gem update --systembenim için çalıştı


6
Bu benim için de Windows üzerinde çalıştı. Geçici olarak klasik HTTP'ye, ardından güncelleyip SSL'ye geri dönmem gerekiyordu.
Tom Mayfield

1
HATA. SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
Yeşil

mücevher kaynakları - remy rubygems.org mücevher kaynakları -a rubygems.org mücevher güncelleme - sistem
Stefan Steiger

4

Sistem saatinizin doğru olduğundan emin olun

Bu tam hata bugün VirtualBox üzerinde çalışan bir Ubuntu sanal makinesinde oldu. Çok eski bir askıya alma durumundan devam ettiğimi fark etmeden önce yukarıda gösterilen çözümlerin çoğunu denedim ve saatim günlerce kapalı kaldı.

Saati güncellemek derhal sorunumu çözdü. İşte benim durumumda kullandığım komut:

sudo hizmeti ntp durağı && sudo ntpdate pool.ntp.org && sudo hizmeti ntp başlat


4

Sadece homebrew ile openssl'i kaldırıp yeniden yüklemek bu sorunu benim için çözdü.

brew uninstall --force openssl

brew install openssl


1
Homebrew'un daha yeni sürümleriyle komutu şu şekilde çalıştırmanız gerekebilir: brew uninstall --ignore-dependencies openssl(eski forcebayrağa denktir )
Batkins

3

Fedora kullanıcıları için

cert.pemCURL tarafından sağlanan en yeni dosyayı güncelleyin : 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

Bunun için windows cmd veya powershell eşdeğeri var mı?
Erran Morad

3

Windows kullanıyorsanız, https://rubygems.org/ adresini internet explorer ile açın .

Güvenlik bilgilerine tıklayın ve sertifikayı içeri aktarın. Sonuç olarak, sertifika zinciriniz eski ve bu yeni sertifikayı eklemeniz gerekiyor. Sertifikayı güvenilir olarak doğrulayabildiğiniz sürece bunun bir güvenlik ihlali olmadığını unutmayın.


Bu benim için hiçbir şey yapmadı ... OpenSSL, Windows sertifika deposunu bile kullanıyor mu?
Julien Ruffin

2

Benim durumumda, Ubuntu CA sertifikaları güncel değil. Ben çalıştırarak sabit:

 sudo update-ca-certificates

2

HTTPS yerine HTTP kullanarak mücevherleri indirmek için otomatikleştirilebilen yaklaşım / tek astar:

printf -- '---\n:sources:\n- http://rubygems.org\n' | tee ~/.gemrc

Bir liman işçisi konteynırında sorunla karşılaşırsanız mükemmel çalışır!
user7364588

1

RubyGems'in (komut satırı aracı) özel durumu, temel işletim sistemi bunların kimliğini doğrulayamasa bile RubyGems'in sunucularla bağlantı kurmasına izin veren güven sertifikalarını kodunun içinde paketlemesini gerektirmesidir.

Birkaç ay öncesine kadar, bu sertifika bir CA tarafından sağlandı, ancak daha yeni sertifika farklı bir sertifika tarafından sağlandı.

Bu nedenle, RubyGems'in varolan yüklemelerinin sertifika değiştirilmeden önce güncellenmesi ve değişikliğin yayılması için yeterli zaman verilmesi (ve kişilerin güncellenmesi) gerekir

Herkes aşağıdaki bağlantıda verilen basit adımları izleyerek çözümünü bulabilir

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


1

Deneyin

gem update --system

Umarım sorunu çözer.


Benim için çalışıyor. Teşekkürler. Ubuntu; Ruby kullanılarak kuruldu 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

Cacert.pem dosyasını http://curl.haxx.se/ca/cacert.pem adresinden indirin . Bu dosyayı C: \ RailsInstaller \ cacert.pem klasörüne kaydedin.

Şimdi SSL_CERT_FILE ayarlayarak sertifika yetkilisi paketinizden ruby'yi haberdar edin. Bunu geçerli komut istemi oturumunuzda ayarlamak için şunu yazın:

SSL_CERT_FILE = C: \ RailsInstaller \ cacert.pem olarak ayarla


0

Salatalık mücevher yüklemeye çalışırken aynı sorun vardı. Ancak bundy gem zaten yakut 2.0 ile yüklü olduğunu fark ettim. Proje klasöründe gerekli mücevherlerle bir Gemfile.rb oluşturdum ve bu adımları izledim

  1. Proje klasörüne gidin
  2. Tip Paket Yükleme

Gerekli tüm taşlar yüklü.


0

OpenCSW pkgutil kullanan Illumos / Solaris için:

'Gem install' öncesinde CSWcacertificates'i kurun

pkgutil -yi CSWcacertificates

OpenCSW'den olmayan bir yakut kiti kullanıyorsanız, yakut sürümünüz sertifika dosyasını başka bir yerde bulmayı bekleyebilir. Bu durumda, OpenCSW'nin /etc/opt/csw/ssl/cert.pem dosyasını beklenen yere sembolize ettim.

Ruby'nin nerede bulmayı beklediğini kontrol edin:

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

Ardından, bir tutarsızlık varsa, bağlayın:

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


0

Windows kullanıcıları için:

Ruby 2.2.3 (+ rubygems 2.5.1) 'i internet erişimi olan bir test makinesine başarıyla yükledikten sonra, ağdaki bir üretim makinesine bundler yüklediğimde bu SSL hatasını aldım.

Ağ erişimi sınırlamalarım olduğundan ve SSL erişimi ayarlarını değiştirmenin bir yolu olmadığından ve hata mesajlarına dayanarak, paketleyicinin kurulumunu bitirmek için aşağıdaki adımları uyguladım (bu çılgınca gelebilir, ancak ) ... çalıştı.

İnternete sınırsız erişimi olan bir makine aracılığıyla aşağıdaki dosyaları indirdi:

Bu bağlantıları bir intranet sunucusuna ekledim ve yukarıdaki bağlantıların klasör yapısını korudum:

  • $ INTRANET_HOME

spec.4.8.gz e latest_specs.4.8.gz

  • $ INTRANET_HOME \ çabuk \ Marshal.4.8

paketleyici-1.11.2.gemspec.rz

  • $ INTRANET_HOME \ taşlar

paketleyici-1.11.2.gem

Sonra gem kaynağına erişmek için intranet ekledi:

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

Kurulumdan sonra "gem install bundler" başarı ile koştum, tüm aldı gem benim intranet kaldırmak oldu:

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

Umarım benzer herhangi bir durumda faydalıdır ....


0

Windows 10 kullanıcısı olarak Dheerendra'nın cevabını takip ettim ve bir gün benim için çalıştı. Ertesi gün, sorunu tekrar yaşadım ve düzeltmesi işe yaramadı. Benim için düzeltme şu şekilde güncellenecekti bundler:

gem update bundler

Sürümümün bundlerbirkaç aydan daha eski olduğuna inanıyorum .


0

Ruby'yi --disable-binary seçeneği ile kurduğunuzdan emin olun , eğer değilse, kaldırın ve seçenekle yeniden yükleyin.

burada daha fazla bilgi


0

Cevap artık geçerli değil. Şu anda eski Windows ruby ile ilgili sorunla karşılaştığımdan beri cevabı göndereceğim.

Bir activesupport gem yüklemek istediğimde:

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)

Aşağıdaki adımların yalnızca yeni windows ruby ​​sertifikalarını kopyalaması gerekir. En son yakutu (veya en az yakut 2.4.0 ) alın ve aşağıdakileri yapın:

bu dizinlerden sertifika kopyalayın (ihtiyaçlarınıza göre ayarlayın):
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

hedefe (tekrar ihtiyacınız olana ayarlayın):
C:\prg_sdk\rubies\Ruby231-p112-x64\lib\ruby\2.3.0\rubygems\ssl_certs

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.