Die Bundle-Installation schlägt mit einem Fehler bei der Überprüfung des SSL-Zertifikats fehl


264

Wenn ich bundle installfür mein Rails 3-Projekt unter Centos 5.5 laufe, schlägt dies mit einem Fehler fehl:

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.

Wenn ich versuche, den Edelstein manuell (von gem install multi_json -v '1.3.2') zu installieren , funktioniert er. Das gleiche Problem tritt bei mehreren anderen Edelsteinen auf. Ich benutze RVM (1.12.3), Ruby 1.9.2, Bundler 1.1.3.

Wie man es repariert?


Vor dem gleichen Problem. Aber mit einem anderen Juwel: Gem :: RemoteFetcher :: FetchError: SSL_connect zurückgegeben = 1 errno = 0 state = SSLv3-Leseserverzertifikat B: Zertifikatüberprüfung fehlgeschlagen ( bb-m.rubygems.org/gems/activeresource-3.2.3.gem )
Sathish

4
Ich habe den gleichen Fehler unter den gleichen Umständen. Angesichts dieser anderen Antworten vermute ich, dass es sich um ein serverseitiges Problem handelt.
Asfallows

Ich hatte ein ähnliches Problem in Rails 5. Es wurde source "https://rubygems.org''behoben, indem das Gemfile hinzugefügt und 'gem update --system' ausgeführt wurde. Weitere Informationen finden Sie hier .
Nesha Zoric

Nesha, dieser Fix hat bei mir funktioniert. Danke dir!
Martin Marino

Antworten:


310

Aktualisieren

Jetzt, wo ich Karma habe, das aus dieser Antwort genug gewonnen wurde, sollte jeder wissen, dass dies hätte behoben werden müssen.

re: via Ownatik erneut schlägt die Bundle-Installation mit SSL-Zertifikat-Überprüfungsfehler fehl

gem update --system

Meine Antwort ist immer noch richtig und wird unten als Referenz gelassen, wenn dies bei Ihnen nicht funktioniert.


Ehrlich gesagt ist die beste vorübergehende Lösung zu

[...] Verwenden Sie die Nicht-SSL-Version von Rubygems in Ihrer Gemfile als vorübergehende Problemumgehung.

über den Benutzer Ownatik

Was sie bedeuten, befindet sich oben in der GemfileÄnderung des Anwendungsverzeichnisses in Ihren Schienen

source 'https://rubygems.org'

zu

source 'http://rubygems.org'

Beachten Sie, dass die zweite Version http anstelle von http s ist


1
Ich akzeptiere diese Antwort, weil ich das zuerst getan habe. Später habe ich meine Bereitstellungsstrategie geändert. Jetzt führe ich die Anwendung auf einem anderen Server aus und kopiere sie dann (mit Edelsteinen im vendorVerzeichnis) auf den Server, über den ich in der Frage geschrieben habe.
Mrzasa

6
Das hat bei mir nicht funktioniert. Der Link von @fbernier unten hat es für mich behoben.
Scott Fister

5
Das funktioniert nicht. Wenn Sie dies ausführen, werden nur Latest version currently installed. Aborting. andere Ideen ausgegeben .
Matt Huggins

1
In Bezug auf die Änderung der Quelle, für neuere Leute wie mich. Ich würde angeben, dass sich diese Datei in Ihrem Anwendungsverzeichnis befindet. Ich habe im Railsinstaller-Verzeichnis danach gesucht. Wie auch immer, ich habe die Quelle geändert und es hat endlich funktioniert. Ich erhalte Zertifikatfehler, wenn ich versuche, das Update auszuführen :(
Brian

2
gem update --systemschlägt mit genau dem gleichen Zertifikatfehler fehl: \
BlueRaja - Danny Pflughoeft

226

Ersetzen Sie die SSL-Gem-Quelle durch Nicht-SSL als temporäre Lösung:


8
OMG hat wie ein Zauber gewirkt! Ich bin unter Windows 7 x64 hinter einem Unternehmens-Proxy. Vielen Dank!
Șerban Ghiță

14
Ich bin überrascht, dass dies nicht höher eingestuft wurde. Dies war die einfachste schnelle Lösung.
Hwatkins

3
Gute temporäre Lösung ... Beachten Sie Folgendes: RubyGems wurde so konfiguriert, dass Edelsteine ​​über die folgenden URLs im Verlauf bereitgestellt werden : * gems.rubyforge.org (RubyGems 1.3.6 und früher) * rubygems.org (RubyGems 1.3. 7 bis 1.8.25) * rubygems.org (RubyGems 2.0.1 und neuer)
beauXjames

1
schnellste Lösung für mich unter Windows 8
Tisch

3
Imho sollte dies nicht einmal als gültige Antwort angesehen werden, da es Ihr System für Angriffe von außen öffnet.
Rubiii

160

Der Grund sind alte Rubingeme. Sie müssen den Systemteil zuerst mit einer Nicht-SSL-Quelle aktualisieren:

gem update --system --source http://rubygems.org/ (vorübergehende Aktualisierung des Systemteils über eine Nicht-SSL-Verbindung).

Jetzt können Sie loslegen gem update.


5
Wirklich einfache Lösung, die plattformübergreifend ist und es RubyGems ermöglicht, sich um die Details zu kümmern. Nett.
Zrisher

2
Dies war diejenige, die akzeptiert werden sollte. Die obigen Antworten erklären nicht, dass Sie zuerst die SSL-Quellen entfernen müssen
Ephraim

1
Danke - das ist das Ticket. Wenn beim Hinzufügen oder Entfernen von Quellen die Meldung "Nicht im Cache" angezeigt wird, versuchen Sie es mit oder ohne abschließenden Schrägstrich. Es muss genau passen.
Timothy Lee Russell

1
Ich habe viele Lösungen gesucht. Dies ist derjenige, der wie ein Zauber wirkte. Danke dir! Dies sollte als die wahre Lösung gewählt werden.
Berker Yüceer

1
Danke dir!! Ich stimme anderen zu, dass dies die akzeptierte Antwort sein sollte, da dies nicht dazu führt, dass Sie Edelsteine ​​über einfaches HTTP abrufen.
Alexander

117

Wenn Sie auf einem Mac arbeiten und eine neuere Version von RVM (~ 1.20) verwenden, hat der folgende Befehl für mich funktioniert.

rvm osx-ssl-certs update

Danke dir! Arbeitete für mich unter Mac OSX 10.8.5
Matthew Blancarte

Danke, hat auch für mich gearbeitet. Ich habe versucht, CocoaPods zu installieren. rvm 1.22.15, OS X 10.8.5
Logan Moseley

1
Dies wird auch in der Fehlermeldung "... siehe bit.ly/ruby-ssl" angegeben.
IAmNaN

Dankessssss !! Hat für mich gearbeitet !! \ o /
Valter Júnior

55

Dieses Problem sollte jetzt behoben sein. Aktualisieren Sie rubygems ( gem update --system), stellen Sie sicher, dass openssl auf Ihrem Betriebssystem auf der neuesten Version ist, oder versuchen Sie diese Tipps, die immer noch nicht funktionieren: http://railsapps.github.com/openssl-certificate-verify-failed.html


1
Musste auch Bundler aktualisieren, damit es funktioniert (Rubygems 2.0.3 + Bundler 1.3.2 + Cygwin OpenSSL 1.0.1e funktioniert für mich unter WinXP).
Fakeleft

Ich musste von 1.3.0 aktualisieren, jetzt bin ich auf 1.3.4 und das https löst nicht mehr den Fehler aus: bundler-1.3.0 / lib / bundler / vendor / net / http / persistent / ssl_reuse.rb: 70: in `connect ': SSL_connect zurückgegeben = 1 errno = 0 state = SSLv3 Lese Server Schlüsselaustausch B: fehlerhafter ecpoint (OpenSSL :: SSL :: SSLError)
Jon Kern

3
Rubygems können nicht aktualisiert werden, wenn das SSL-Zertifikat nicht akzeptiert wird! Laufen hier im Kreis;)
Kap

50

Temporäre Lösung (wie von Ownatik angedeutet):

Erstellen oder ändern Sie eine Datei mit dem Namen .gemrc in Ihrem Home-Pfad, einschließlich der Zeile :ssl_verify_mode: 0

Dadurch wird verhindert, dass der Bundler die SSL-Zertifikate von Gems überprüft, wenn er versucht, sie zu installieren.

Für * nix-Geräte bedeutet "Home-Pfad" ~/.gemrc. Sie können auch erstellen, /etc/gemrcwenn Sie möchten. Für Windows XP bedeutet "Home-Pfad" c:\Documents and Settings\All Users\Application Data\gemrc. Für Windows 7C:\ProgramData\gemrc


3
%USERPROFILE%\.gemrcwird auch unter gemWindows gesucht .
Rômulo Ceccon

1
Empfohlener Dateispeicherort für Windows 8?
user1318135

6
Das Entfernen der SSL-Überprüfung ist eine vorübergehende Problemumgehung, die eine Sicherheitslücke öffnet. Lesen Sie hier mehr: github.com/rubygems/rubygems/commit/…
mrm

Dies ist in meinem Fall nützlich; hinter einer Unternehmensfirewall, die alle komprimierten Dateien einschränkt, sie jedoch über https zulässt.
Mydoghaswürmer

Ich habe diese Lösung nicht ausprobiert, aber in meinem Fall auch funktioniert, als ich diesen Inhalt zum ~/.gemrc::sources: - http://rubygems.org
Artur Käpp

18

Unter Windows 7 können Sie die Datei cacert.pem von hier herunterladen und die Umgebungsvariable SSL_CERT_FILE auf den Pfad setzen, in dem Sie das Zertifikat speichern, z

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

oder Sie können die Variable in Ihrem Skript so festlegen ENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"

Ersetzen Sie <Benutzername> durch Ihren eigenen Benutzernamen.


3
Danke dir. Permanente Lösung ist hier. guides.rubygems.org/ssl-certificate-update
Maheshkumar

Dies ist die richtige dauerhafte Lösung, um die Verwendung einer ungesicherten http-Quelle zu vermeiden.
Dio Phung

15

Die wirkliche Lösung für dieses Problem, wenn Sie RVM verwenden:

  1. Rubygems aktualisieren: gem update --system
  2. Verwenden Sie RVM, um SSL-Zertifikate zu aktualisieren: rvm osx-ssl-certs update all

Hutspitze zu diesem Tipp im RailsApps-Projekt !


1
rvm osx-ssl-certs update allhat gut für mich funktioniert. Musste nicht Schritt 1 machen.
DMH


7

Für diejenigen unter Ihnen, die Ruby über RVM installiert haben und eine schnelle Lösung wünschen (lieber nicht gemäß Brunos Anfrage lesen), versuchen Sie einfach Folgendes:

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

Für weitere Details ist hier der Link, über den ich die Lösung gefunden habe.

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

Übrigens musste ich meine Zertifikate unter Ubuntu nicht berühren.

Das Beste ist, dass dies keine Problemumgehung ist. Es lädt Edelsteine ​​über SSL herunter und schlägt fehl, wenn es ein Problem wie einen Mann im mittleren Angriff gibt, das viel besser ist, als nur die Sicherheit auszuschalten.


Die Seite, auf die Sie verlinken, hat (zuerst) eine "Problemumgehung" und dann die richtigen Lösungen. Es wäre besser, wenn Ihre Antwort dies etwas klarer aussagen würde. Die Verwendung von CA-Zertifikaten (über cacert.pemoder $rvm_path/usr/ssl) ist jedoch in der Tat der richtige Weg.
Bruno

1
Bruno, die Lösung wird wahrscheinlich etwas anders sein, je nachdem, welchen Unix-Geschmack die Person verwendet. Es sieht so aus, als ob das Lesen des Links notwendig sein wird.
Danielrussia

Ich habe gerade über den Unterschied zwischen der "Problemumgehung" auf der Seite ( :ssl_verify_mode: 0die Probleme öffnet) und einer der drei darunter liegenden Lösungen gesprochen, die der richtige Weg sind, um dieses Problem zu beheben.
Bruno

@Bruno, ich habe meinen Artikel überarbeitet. Bitte füge Kommentare hinzu oder bearbeite das Wiki, wenn du Verbesserungsmöglichkeiten siehst.
Daniel Kehoe

6

Dies wurde behoben

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

Nachdem RubyGems 2.6.x veröffentlicht wurde, können Sie manuell auf diese Version aktualisieren.

Laden Sie https://rubygems.org/downloads/rubygems-update-2.6.7.gem herunter

Bitte laden Sie die Datei in ein Verzeichnis herunter, auf das Sie später verweisen können (z. B. das Stammverzeichnis Ihrer Festplatte C :)

Verwenden Sie jetzt Ihre Eingabeaufforderung:

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

Danach sollte gem --version die neue Update-Version melden.

Sie können jetzt rubygems-update gem sicher deinstallieren:

C:\>gem uninstall rubygems-update -x

5

Einfache Anleitung zum Kopieren und Einfügen, die hier über die PEM-Datei gegeben wird

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

Zur Überprüfung des Zertifikats fehlgeschlagen

Wenn Sie die vorherigen Abschnitte gelesen haben, wissen Sie, was dies bedeutet (und schämen Sie sich, wenn Sie dies nicht getan haben).

Wir müssen AddTrustExternalCARoot-2048.pem herunterladen . Öffnen Sie eine Eingabeaufforderung und geben Sie Folgendes ein:

C:> gem which rubygems C: /Ruby21/lib/ruby/2.1.0/rubygems.rb Suchen wir nun dieses Verzeichnis. Geben Sie im selben Fenster den Pfadteil bis zur Dateierweiterung ein, verwenden Sie jedoch stattdessen umgekehrte Schrägstriche:

C:> C: \ Ruby21 \ lib \ ruby ​​\ 2.1.0 \ rubygems starten Dies öffnet ein Explorer-Fenster in dem von uns angegebenen Verzeichnis.

Schritt 3: Kopieren Sie das neue Vertrauenszertifikat

Suchen Sie nun das Verzeichnis ssl_certs und kopieren Sie die PEM-Datei, die wir aus dem vorherigen Schritt erhalten haben.

Es wird mit anderen Dateien wie GeoTrustGlobalCA.pem aufgelistet.


4

gleiches Problem, aber mit unterschiedlichem Edelstein hier:

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.

vorübergehende Lösung: gem install builder -v '3.0.0'Ermöglicht das Fortfahrenbundle install


7
Sie können auch die Nicht-SSL-Version von Rubygems in Ihrer Gemfile als vorübergehende Problemumgehung verwenden.
fbernier

1
Ich habe es getan und es funktioniert. Im Moment ist das eine ausreichende Lösung.
Mrzasa

Ich habe hier das gleiche Problem. Also @Ownatik, wie man SSL-Version von Rubygems verwendet?
Zeck

4

Die einfachste Lösung:

rvm pkg install openssl
rvm reinstall all --force

Voila!


2
Was macht das eigentlich mit meinem System?
Bradley Flood


4

Mein permanenter Fix für Windows:

  1. Laden Sie das CACert herunter und speichern Sie es C:\ruby\ssl_certs\GlobalSignRootCA.pemunter http://guides.rubygems.org/ssl-certificate-update/.

  2. Erstellen Sie eine Systemvariable mit dem Namen " SSL_CERT_FILE " C:\ruby\ssl_certs\GlobalSignRootCA.pem.

  3. Versuchen Sie es erneut: 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

Unter Ubuntu 12.04 wird ein etwas anderer Fehler angezeigt, der möglicherweise damit zusammenhängt:

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.

Es passiert, wenn ich bundle installmit source 'https://rubygems.org'in einem Gemfile laufe.

Dies ist ein Problem mit OpenSSL unter Ubuntu 12.04. Siehe Rubygems-Ausgabe Nr. 319 .

Um dies zu beheben, führen Sie apt-get update && apt-get upgradeUbuntu 12.04 aus, um Ihre OpenSSL zu aktualisieren.


3

Ich konnte dies daran erkennen, dass die Binärdateien das rvm heruntergeladenen mit OpenSSL von OS X, das alt ist und vom Betriebssystem nicht mehr verwendet wird, nicht gut funktionieren.

Die Lösung für mich bestand darin, die Kompilierung bei der Installation von Ruby über Folgendes zu erzwingen rvm:

rvm reinstall --disable-binary 2.2

Das hat bei mir funktioniert. Sie müssen "2.2" mit der von Ihnen verwendeten Ruby-Version ersetzen
Josh

3

Danke an @ Alexander.Iljushkin für:

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

Nachdem dieser Bundler immer noch fehlgeschlagen war und die Lösung dafür war:

gem install bundler


2

Ich habe einen ähnlichen Fehler erhalten. So habe ich das gelöst: Suchen Sie in Ihrem Pfadverzeichnis nach Gemfile. Bearbeiten Sie die Quelle in der Gem-Datei in http anstelle von https und speichern Sie sie. Dadurch wird der Bundler möglicherweise ohne das SSL-Zertifikat issue.l installiert


2

Überprüfen Sie für Windows-Computer Ihre Gem-Version mit

gem --version

Dann aktualisiere deinen Edelstein wie folgt:

Bitte laden Sie die Datei in ein Verzeichnis herunter, auf das Sie später verweisen können (z. B. das Stammverzeichnis Ihrer Festplatte C :)

Verwenden Sie jetzt Ihre Eingabeaufforderung:

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

Jetzt ist die Bundle-Installation ohne Fehler bei der Überprüfung des SSL-Zertifikats erfolgreich.

Eine ausführlichere Anleitung finden Sie hier


1

Das hat bei mir funktioniert:

  • Laden Sie das neueste Juwel unter herunter https://rubygems.org/pages/download
  • installiere den Edelstein mit gem install --local [path to downloaded gem file]
  • Aktualisiere die Edelsteine ​​mit update_rubygems
  • Überprüfen Sie, ob Sie die neueste Edelsteinversion mit haben gem --version

1

Ich musste openssl neu installieren:

brew uninstall --force openssl
brew install openssl

1

Ich war vor kurzem mit diesem Problem konfrontiert und folgte die beschriebenen Schritte hier . Möglicherweise zeigen Sie nicht auf das richtige OpenSSL-Zertifikat. Nach dem Rennen:

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

und

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

das Bundle komplett lief!


1

Laden Sie rubygems-update-2.6.7.gem herunter .

Verwenden Sie jetzt Ihre Eingabeaufforderung:

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

Danach, gem --version sollte die neue Update-Version gemeldet werden.

Sie können jetzt rubygems-update gem sicher deinstallieren:

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

1

Wenn Sie Edelsteine ​​aus einer Quelle abrufen, deren SSL-Zertifikat von einer internen Zertifizierungsstelle als vertrauenswürdig eingestuft wird (oder die Sie über einen Unternehmens-Webproxy mit SSL-Überprüfung mit einer externen Quelle verbinden), verweisen Sie Ihre env-Variable SSL_CERT_FILE auf Ihre Zertifikatkette . Dies erfordert höchstwahrscheinlich nur das Exportieren Ihres Stammzertifikats aus Ihrem Zertifikatspeicher (System Keychain unter macOS) an einen zugänglichen Ort aus Ihrer Shell, dh:

export SSL_CERT_FILE=~/RootCert.pem

0

Wenn Sie verwenden rails-assets

Wenn Sie https://rails-assets.org/Ihr Vermögen verwaltet haben, helfen Ihnen keine Antworten. Selbst das Konvertieren in httpwird nicht helfen.

Die einfachste Lösung ist die Verwendung dieser Quelle http://insecure.rails-assets.org. Dies wurde auf ihrer Homepage erwähnt .


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.