SSL sertifikası doğrulama hatası ile paket yüklemesi başarısız oluyor


264

bundle installCentos 5.5'te Rails 3 projem için çalıştırdığımda bir hata ile başarısız oluyor:

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 elle yüklemeye çalıştığımda (tarafından gem install multi_json -v '1.3.2') çalışır. Aynı sorun diğer birkaç mücevherde de görülür. RVM (1.12.3), yakut 1.9.2, paket 1.1.3 kullanıyorum.

Nasıl düzeltebilirim?


Aynı sorunla karşı karşıya. Ancak başka bir mücevherle: Gem :: RemoteFetcher :: FetchError: SSL_connect döndü = 1 errno = 0 durum = SSLv3 okuma sunucusu sertifikası B: sertifika doğrulaması başarısız oldu ( bb-m.rubygems.org/gems/activeresource-3.2.3.gem )
Sathish

4
Aynı koşullarla aynı hatayla karşılaşıyorum. Bu diğer yanıtlar göz önüne alındığında, sunucu tarafında bir sorun olduğundan şüpheleniyorum.
asfallows

Rails 5 benzer bir sorun vardı source "https://rubygems.org''. Gemfile ekleyerek ve 'gem update --system' çalıştırarak düzeltildi. Daha fazla bilgiyi burada bulabilirsiniz .
Nesha Zoric

Nesha, bu düzeltme benim için çalıştı. Teşekkür ederim!
Martin Marino

Yanıtlar:


310

Güncelleme

Şimdi bu cevaptan yeterince mayınlı olduğum için karma olduğumu herkesin bilmesi gerektiğini bilmeliyim.

re: Ownatik üzerinden tekrar paket kurulumu SSL sertifikası doğrulama hatası ile başarısız oluyor

gem update --system

Cevabım hala doğru ve bu sizin için çalışmıyorsa referans için aşağıda bırakılmıştır.


Dürüst olmak gerekirse en iyi geçici çözüm

[...] geçici bir çözüm olarak gemfile içinde rubygems olmayan ssl sürümünü kullanın.

kullanıcı Ownatik üzerinden

ne demek onlar Gemfileraylar uygulama dizini değişiklik üstünde

source 'https://rubygems.org'

için

source 'http://rubygems.org'

Not ikinci versiyonu olduğunu http yerine http ler


1
Bu cevabı kabul ediyorum, çünkü ilk başta yaptığım şey buydu. Daha sonra konuşlandırma stratejimi değiştirdim. Şimdi uygulamayı başka bir sunucuda paketledim ve sonra ( vendordizindeki taşlar ile ) soruda yazdığım sunucuya kopyalarım .
mrzasa

6
Bu benim için işe yaramadı. Aşağıdaki @fbernier tarafından sağlanan bağlantı benim için düzeltti.
Scott Fister

5
Bu işe yaramıyor. Bunu çalıştırmak sadece Latest version currently installed. Aborting. başka fikirlerin çıktısını verir mi?
Matt Huggins

1
Kaynağı değiştirmek açısından, benim gibi yeni insanlar için. Bu dosyanın uygulama dizininizde olduğunu belirtirim. Onu railsinstaller dizininde arıyordum. Her neyse, kaynağı değiştirdim ve sonunda çalıştı. Güncellemeyi çalıştırmaya çalıştığımda sertifika hataları alıyorum :(
Brian

2
gem update --systemaynı sertifika hatasıyla başarısız olursa: \
BlueRaja - Danny Pflughoeft

226

Geçici çözüm olarak SSL taş kaynağını SSL olmayan ile değiştirin:


8
OMG bir cazibe gibi çalıştı! Kurumsal bir proxy'nin arkasında Windows 7 x64 kullanıyorum. Çok teşekkürler!
banerban Ghiță

14
Bu daha yüksek sırada değildi, bu en kolay hızlı düzeltme oldu şaşırdım.
hwatkins

3
iyi geçici çözüm ... aşağıdakilerin farkında olun :: RubyGems, geçmişi boyunca aşağıdaki URL'ler aracılığıyla değerli taşlara hizmet verecek şekilde yapılandırılmıştır: * gems.rubyforge.org (RubyGems 1.3.6 ve öncesi) * rubygems.org (RubyGems 1.3. 7 - 1.8.25) * rubygems.org (RubyGems 2.0.1 ve daha yenisi)
beauXjames

1
8'de benim için en hızlı çözüm
Tisch

3
Bu geçerli bir cevap olarak kabul edilmemelidir, çünkü sisteminizi dışarıdan gelen saldırılara açar.
rubiii

160

Nedeni eski rubygems. Sistem parçasını önce ssl olmayan bir kaynak kullanarak güncellemeniz gerekir:

gem update --system --source http://rubygems.org/ (sistem bağlantısını ssl olmayan bir bağlantı kullanarak geçici olarak güncelleme).

Artık kullanıma hazırsınız gem update.


5
Platformlar arası ve RubyGems'in ayrıntılarla ilgilenmesini sağlayan gerçekten basit bir çözüm. Güzel.
zrisher

2
kabul edilmesi gereken buydu, yukarıdaki cevaplar önce ssl kaynaklarını kaldırmanız gerektiğini açıklamıyor
Ephraim

1
Teşekkürler - bilet bu. Kaynak eklerken veya kaldırırken "önbellekte değil" iletisi alırsanız, bunu eğik çizgi ile veya eğik çizgi olmadan deneyin. Tam olarak eşleşmelidir.
Timothy Lee Russell

1
Birçok çözüm aradım. Bu bir cazibe gibi çalıştı. Teşekkür ederim! Bu gerçek çözüm olarak seçilmelidir.
Berker Yüceer

1
Teşekkür ederim!! Başkalarına, kabul edilen cevap olması gerektiğine katılıyorum, çünkü düz HTTP aracılığıyla mücevher getirmenize neden olmaz.
Alexander

117

Mac kullanıyorsanız ve RVM'nin yeni bir sürümünü kullanıyorsanız (~ 1.20), aşağıdaki komut benim için çalıştı.

rvm osx-ssl-certs update

Teşekkür ederim! Mac OSX 10.8.5
Matthew Blancarte

Teşekkürler, benim için de çalıştı. CocoaPods'u yüklemeye çalışıyordum. rvm 1.22.15, OS X 10.8.5
Logan Moseley

1
Bu aynı zamanda "... bit.ly/ruby-ssl" hata mesajında ​​da belirtilir.
IAmNaN

Thankssssss !! Benim için çalıştı !! \ o /
Valter Júnior

55

Bu sorunun düzeltilmesi gerekiyor. Rubygems'i ( gem update --system) güncelleyin, openssl'nin işletim sisteminizde en son sürümde olduğundan emin olun veya hala çalışmadığına ilişkin şu ipuçlarını deneyin: http://railsapps.github.com/openssl-certificate-verify-failed.html


1
Paketleyicinin çalışması için de güncellenmesi gerekiyordu (rubygems 2.0.3 + bundler 1.3.2 + cygwin openssl 1.0.1e winxp'de benim için çalışıyor).
fakeleft

1.3.0'dan güncellemem gerekti, şimdi 1.3.4'teyim ve https artık hatayı atmıyor: bundler-1.3.0 / lib / bundler / vendor / net / http / persistent / ssl_reuse.rb: 70: `` connect '' içinde: SSL_connect = 1 errno = 0 durumu = SSLv3 okuma sunucusu anahtar değişimi B: bozuk ecpoint (OpenSSL :: SSL :: SSLError)
Jon Kern

3
SSL sertifikası kabul edilmezse rubygems'i güncellemek mümkün değildir! Burada daireler çizerek;)
kap

50

Geçici çözüm (Ownatik tarafından belirtildiği gibi):

Satır da dahil olmak üzere ana yolunuzda .gemrc adlı bir dosya oluşturun veya değiştirin :ssl_verify_mode: 0

Bu, paketleyicinin yüklemeye çalışırken değerli taşların SSL sertifikalarını kontrol etmesini önleyecektir.

* Nix cihazlar için 'ana yol' anlamına gelir ~/.gemrc. İsterseniz de oluşturabilirsiniz /etc/gemrc. Windows XP için 'ana yol' anlamına gelir c:\Documents and Settings\All Users\Application Data\gemrc. Windows 7 için,C:\ProgramData\gemrc


3
%USERPROFILE%\.gemrcgemWindows'da da aranır .
Rômulo Ceccon

1
Windows 8 için önerilen dosya konumu?
user1318135

6
SSL doğrulamasını kaldırmak, bir güvenlik açığı açan geçici bir çözümdür. Daha fazla bilgiyi
mrm

Bu benim durumumda kullanışlıdır; tüm sıkıştırılmış dosyaları kısıtlayan ancak https aracılığıyla izin veren kurumsal bir güvenlik duvarının arkasında.
mydoghasworms

Bu çözümü denemedim, ama benim durumumda da bu içeriği aşağıdakilere eklediğimde çalıştı ~/.gemrc::sources: - http://rubygems.org
Artur Käpp

18

Eğer gelen cacert.pem dosyayı indirebilirsiniz windows7 üzerinde burada sertifika örneğin saklamak yoluna environementvariable SSL_CERT_FILE ve set

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

veya betiğinizdeki değişkeni şöyle ayarlayabilirsiniz ENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"

<Kullanıcıadı> yerine kendi kullanıcı adınızı yazın.


3
Teşekkür ederim. Kalıcı düzeltme burada. guides.rubygems.org/ssl-certificate-update
Maheshkumar

Bu doğru kalıcı çözümdür ve güvenli olmayan http kaynağı kullanmaktan kaçınır.
Dio Phung

15

RVM kullanıyorsanız, bu sorunun gerçek çözümü:

  1. Güncelleme rubygems: gem update --system
  2. SSL sertifikalarını yenilemek için RVM'yi kullanın: rvm osx-ssl-certs update all

RailsApps projesinde bu ipucuna şapka ucu !


1
rvm osx-ssl-certs update allbenim için iyi çalıştı. 1. adımı yapmak zorunda
olmadı


7

RVM aracılığıyla yakut yüklü olan ve hızlı bir düzeltme isteyen (Bruno'nun isteğine göre okumamayı tercih eden) olanlar için şunu deneyin:

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

Daha fazla ayrıntı için, çözümü bulduğum bağlantı.

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

BTW, Ubuntu'daki sertifikalarıma dokunmak zorunda kalmadım.

En iyisi, bu bir çözüm değil. SSL aracılığıyla mücevherleri indirecek ve orta saldırıda bir adam gibi bir güvenlik varsa, sadece güvenliği kapatmaktan daha iyi olacaktır.


Bağlantı verdiğiniz sayfada bir "geçici çözüm" (önce) ve ardından uygun çözümler bulunur. Cevabınız biraz daha açık bir şekilde ifade ettiyse daha iyi olurdu. Bununla birlikte, CA sertifikalarını ( cacert.pemveya aracılığıyla $rvm_path/usr/ssl) kullanmak gerçekten de doğru yoldur.
Bruno

1
Bruno, çözümün Unix'in kullandığı lezzete bağlı olarak muhtemelen biraz farklı olacaktır. Bağlantının okunması gerekecek gibi görünüyor.
danielrussia

:ssl_verify_mode: 0Bu sorunu çözmenin doğru yolu olan aşağıdaki 3 çözümün aksine , sayfadaki "geçici çözüm" arasındaki farkı ( açık problemler) konuşuyordum .
Bruno

@Bruno, makalemi gözden geçirdim, lütfen yorum ekleyin veya iyileştirme olanakları görürseniz wiki'yi düzenleyin.
Daniel Kehoe

6

Bu giderildi

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

Artık RubyGems 2.6.x kullanıma sunulduğundan, bu sürüme manuel olarak güncelleyebilirsiniz.

Https://rubygems.org/downloads/rubygems-update-2.6.7.gem indir

Lütfen dosyayı daha sonra işaret edebileceğiniz bir dizine indirin (örn. Sabit disk C'nin kökü :)

Şimdi Komut İsteminizi kullanarak:

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

Bundan sonra, gem --version yeni güncelleme sürümünü rapor etmelidir.

Artık rubygems-update gem'i güvenle kaldırabilirsiniz:

C:\>gem uninstall rubygems-update -x

5

.Pem dosyası hakkında burada verilen basit kopyalama yapıştırma talimatı

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

Sertifika doğrulaması başarısız oldu

Önceki bölümleri okuduysanız, bunun ne anlama geldiğini bileceksiniz (ve eğer yapmadıysanız utanç>).

AddTrustExternalCARoot-2048.pem dosyasını indirmemiz gerekiyor . Bir Komut İstemi açın ve şunu yazın:

C:> rubygems olan mücevher C: /Ruby21/lib/ruby/2.1.0/rubygems.rb Şimdi bu dizini bulalım. Aynı pencereden, yol parçasını dosya uzantısına kadar girin, bunun yerine ters eğik çizgiler kullanın:

C:> başlat C: \ Ruby21 \ lib \ ruby ​​\ 2.1.0 \ rubygems Bu, belirttiğimiz dizinin içinde bir Explorer penceresi açacaktır.

3. Adım: Yeni güven sertifikasını kopyalayın

Şimdi, ssl_certs dizinini bulun ve içindeki önceki adımdan elde ettiğimiz .pem dosyasını kopyalayın.

GeoTrustGlobalCA.pem gibi diğer dosyalarla listelenir.


4

aynı sorun ama burada farklı gem ile:

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.

geçici çözüm: gem install builder -v '3.0.0'devam etmeyi mümkün kılarbundle install


7
Gemfile'nizdeki rubygems'in ssl olmayan sürümünü geçici bir çözüm olarak da kullanabilirsiniz.
fbernier

1
Ben yaptım ve işe yarıyor. Şimdilik bu yeterli bir çözüm.
mrzasa

Burada da aynı bir sorun var. Peki @Ownatik rubygems ssl sürümü nasıl kullanılır?
Zeck



4

Windows için kalıcı düzeltmem:

  1. İndir cacert olarak kaydetme, C:\ruby\ssl_certs\GlobalSignRootCA.pemgelen http://guides.rubygems.org/ssl-certificate-update/

  2. " SSL_CERT_FILE " adlı bir sistem değişkeni oluşturun C:\ruby\ssl_certs\GlobalSignRootCA.pem.

  3. Tekrar deneyin 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'te belki de olsa biraz farklı bir hata alıyorum:

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.

Ben çalıştırdığınızda bu olur bundle installile source 'https://rubygems.org'bir Gemfile içinde.

Bu Ubuntu 12.04'te OpenSSL ile ilgili bir sorundur. Bkz. Rubygems sayı # 319 .

Bunu düzeltmek apt-get update && apt-get upgradeiçin OpenSSL'nizi yükseltmek üzere Ubuntu 12.04 üzerinde çalıştırın .


3

rvmİndirilen ikili dosyaların OS X'in eski ve artık işletim sistemi tarafından kullanılmayan OpenSSL ile iyi oynamamasına kadar bunu izleyebildim .

Benim için çözüm Ruby'yi kurarken derlemeyi zorlamaktı rvm:

rvm reinstall --disable-binary 2.2

Bu benim için çalıştı. "2.2" yi kullandığınız yakut versiyonuyla değiştirmeniz gerekiyor
Josh

3

Şunun için teşekkürler: @ Alexander.Iljushkin:

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

Bu paketleyici hala başarısız olduktan ve çözümün ardından:

gem install bundler


2

Benzer bir hata alıyordum. Bunu şu şekilde çözdüm: Yol dizininizde Gemfile olup olmadığını kontrol edin. Gemfile içindeki kaynağı https yerine http olarak düzenleyin ve kaydedin. Bu, SSL sertifikası sorunu olmadan paketleyiciyi yükleyebilir. L


2

Windows makine için mücevher sürümünüzü

gem --version

Sonra geminizi aşağıdaki gibi güncelleyin:

Lütfen dosyayı daha sonra işaret edebileceğiniz bir dizine indirin (örn. Sabit sürücünüzün kökü C :)

Şimdi Komut İsteminizi kullanarak:

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

Şimdi, paket yüklemesi SSL sertifikası doğrulama hatası olmadan başarılı olacaktır.

Daha ayrıntılı talimat burada



1

Openssl yeniden yüklemek zorunda kaldı:

brew uninstall --force openssl
brew install openssl

1

Kısa süre önce bu sorunla karşı karşıya kaldım ve burada özetlenen adımları takip ettim . Doğru OpenSSL sertifikasını işaret etmeme şansınız olabilir. Koşu sonrası:

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

ve

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

paket tamamlandı!


1

İndir rubygems-update-2.6.7.gem .

Şimdi Komut İsteminizi kullanarak:

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

Bundan sonra, gem --version , yeni güncelleme sürümünü rapor etmelidir.

Artık rubygems-update gem'i güvenle kaldırabilirsiniz:

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

1

SSL sertifikasının dahili bir sertifika yetkilisi tarafından güvendiği bir kaynaktan değerli taşlar alıyorsanız (veya harici bir kaynağa SSL denetimi ile bir şirket web proxy'si üzerinden bağlanıyorsanız), SSL_CERT_FILE env değişkeninizi sertifika zincirinize yönlendirin. . Bu büyük olasılıkla kök sertifikanızı sertifika deponuzdan (macOS'taki Sistem Anahtarlık) kabuğunuzdan erişilebilir bir konuma aktarmanızı gerektirir;

export SSL_CERT_FILE=~/RootCert.pem

0

Kullanıyorsanız rails-assets

https://rails-assets.org/Varlıklarınızı yönetmek için kullanıyorsanız , hiçbir yanıt size yardımcı olmaz. Dönüştürmek bile httpyardımcı olmaz.

En basit düzeltme bunun yerine bu kaynağı kullanmaktır http://insecure.rails-assets.org. Bu, ana sayfasında belirtildi .


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.