Wenn ich bundle install
für mein Rails 3-Projekt auf Centos 5.5 schlägt 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 zu installieren (von gem install multi_json -v '1.3.2'
) Es klappt. Das gleiche Problem tritt bei mehreren anderen Edelsteinen auf. Ich verwende RVM (1.12.3), Ruby 1.9.2, Bundler 1.1.3.
Wie man es repariert?
Update
Jetzt, wo ich Karma genug von dieser Antwort erhalten habe, sollte jeder wissen, dass dies hätte behoben werden müssen.
erneut: über Ownatik Die Installation des Bundles schlägt mit einem Fehler bei der Überprüfung des SSL-Zertifikats fehl
gem update --system
Meine Antwort ist immer noch richtig und wird unten als Referenz hinterlassen, falls dies für Sie nicht funktioniert.
Ehrlich gesagt ist die beste vorübergehende Lösung zu
[...] Verwenden Sie die Nicht-SSL-Version von Rubygems in Ihrer Gem-Datei als vorübergehende Problemumgehung.
über den Benutzer Ownatik
was sie bedeuten, steht oben im Gemfile
in Ihrem Rails Anwendungsverzeichnis)
source 'https://rubygems.org'
zu
source 'http://rubygems.org'
beachten Sie, dass die zweite Version http anstelle von http s ist.
Ersetzen Sie die SSL-Gem-Quelle durch eine Nicht-SSL-Lösung:
Der Grund sind alte Rubine. Sie müssen zuerst den Systemteil unter Verwendung 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 gem update
Verwenden.
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
Dieses Problem sollte jetzt behoben sein. Rubygems aktualisieren (gem update --system
), vergewissern Sie sich, dass openssl auf Ihrem Betriebssystem auf dem neuesten Stand ist, oder probieren Sie die folgenden Tipps aus, damit es immer noch nicht funktioniert: http://railsapps.github.com/openssl-certificate-verify-failed.html
Temporäre Lösung (wie von Ownatik angedeutet):
Erstellen oder ändern Sie eine Datei mit dem Namen .gemrc in Ihrem Startpfad, einschließlich der Zeile :ssl_verify_mode: 0
Dies verhindert, dass der Bundler die SSL-Zertifikate von Gems überprüft, wenn er versucht, sie zu installieren.
Für * nix-Geräte bedeutet 'Heimatpfad' ~/.gemrc
. Sie können auch /etc/gemrc
wenn Sie es vorziehen. Unter Windows XP bedeutet "Heimatpfad" c:\Documents and Settings\All Users\Application Data\gemrc
. Für Windows 7 C:\ProgramData\gemrc
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 wie folgt einstellen ENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"
Ersetzen Sie <Benutzername> durch Ihren eigenen Benutzernamen.
Die echte Lösung für dieses Problem, wenn Sie RVM verwenden:
gem update --system
rvm osx-ssl-certs update all
Hut ab vor dieser Tipp zum RailsApps-Projekt !
Für diejenigen unter Ihnen, die Ruby über RVM installiert haben und eine schnelle Lösung wünschen (lieber nicht nach Brunos Anfrage lesen), versuchen Sie 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, hier ist der Link, wo ich die Lösung gefunden habe.
http://railsapps.github.com/openssl-certificate-verify-failed.html
Übrigens musste ich meine Zertifikate auf Ubuntu nicht anfassen.
Das Beste ist, dass dies keine Problemumgehung ist. Es lädt Edelsteine über SSL herunter und schlägt fehl, wenn ein Problem wie ein Mann in der Mitte auftritt, das viel besser ist, als nur die Sicherheit auszuschalten.
Sie können eine Liste der CA-Zertifikate von der Website von curl unter http://curl.haxx.se/ca/cacert.pem herunterladen
Setzen Sie dann die Umgebungsvariable SSL_CERT_FILE auf Ruby), um sie zu verwenden. Beispiel unter Linux:
$ SSL_CERT_FILE=~/cacert.pem bundle install
(Referenz: https://Gist.github.com/fnichol/86755 )
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.
Download https://rubygems.org/downloads/rubygems-update-2.6.7.gem
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 rubygems-update gem jetzt sicher deinstallieren:
C:\>gem uninstall rubygems-update -x
Hier finden Sie eine einfache Anleitung zum Kopieren und Einfügen der .pem-Datei
https://Gist.github.com/luislavena/f064211759ee0f806c88
Zur Zertifikatsprüfung fehlgeschlagen
Wenn Sie die vorherigen Abschnitte gelesen haben, wissen Sie, was dies bedeutet (und schämen 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 Lassen Sie uns nun dieses Verzeichnis finden. Geben Sie im selben Fenster den Pfad bis zur Dateierweiterung ein, verwenden Sie jedoch stattdessen umgekehrte Schrägstriche:
C:> starte C:\Ruby21\lib\Ruby\2.1.0\rubygems Dies öffnet ein Explorer-Fenster in dem 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.
So beheben Sie dieses Problem unter Windows:
laden Sie die .perm-Datei herunter und legen Sie die SSL_CERT_FILE in der Eingabeaufforderung fest
Die einfachste Lösung:
rvm pkg install openssl
rvm reinstall all --force
Voila!
gleiches Problem aber mit anderem 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 Fortfahren mit bundle install
Mein permanenter Fix für Windows:
Laden Sie das CACert herunter und speichern Sie es als C:\Ruby\ssl_certs\GlobalSignRootCA.pem
from http://guides.rubygems.org/ssl-certificate-update/
Erstellen Sie eine Systemvariable mit dem Namen " SSL_CERT_FILE " und setzen Sie sie auf C:\Ruby\ssl_certs\GlobalSignRootCA.pem
.
Versuch es noch einmal: 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
Vielen Dank an @ Alexander.Iljushkin für:
gem update --system --source http://rubygems.org/
Danach scheiterte der Bundler immer noch und die Lösung dafür war:
gem install bundler
Unter Ubuntu 12.04 erhalte ich einen etwas anderen Fehler, obwohl er möglicherweise verwandt ist:
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 install
mit source 'https://rubygems.org'
in einem Gemfile.
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 upgrade
unter Ubuntu 12.04, um Ihr OpenSSL zu aktualisieren.
Ich konnte dies auf die Tatsache zurückführen, dass die Binärdateien, die rvm
herunterlädt, nicht mit OpenSSL von OS X kompatibel sind, das alt ist und vom Betriebssystem nicht mehr verwendet wird.
Die Lösung für mich bestand darin, die Kompilierung bei der Installation von Ruby über rvm
zu erzwingen:
rvm reinstall --disable-binary 2.2
Ich bekam einen ähnlichen Fehler. So habe ich das gelöst: Suchen Sie in Ihrem Pfadverzeichnis nach Gemfile. Bearbeiten Sie die Quelle in der Gemdatei in http statt in https und speichern Sie sie. Dadurch wird möglicherweise der Bundler ohne das SSL-Zertifikat issue.l installiert
Überprüfen Sie für Windows-Computer Ihre Gem-Version mit
gem --version
Dann aktualisiere deinen Edelstein wie folgt:
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
Die Bundle-Installation wird nun ohne einen Fehler bei der Überprüfung des SSL-Zertifikats erfolgreich abgeschlossen.
Eine ausführlichere Anleitung finden Sie unter hier
Das hat bei mir funktioniert:
gem install --local [path to downloaded gem file]
update_rubygems
gem --version
Ich war erst vor kurzem mit diesem Problem konfrontiert und folgte den beschriebenen Schritten hier . Möglicherweise verweisen 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!
Download rubygems-update-2.6.7.gem .
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 melden.
Sie können rubygems-update gem jetzt sicher deinstallieren:
C:\>gem uninstall rubygems-update -x
Removing update_rubygems
Successfully uninstalled rubygems-update-2.6.7
Ich musste openssl neu installieren:
brew uninstall --force openssl
brew install openssl
Wenn Sie Edelsteine von einer Quelle abrufen, deren SSL-Zertifikat von einer internen Zertifizierungsstelle als vertrauenswürdig eingestuft wurde (oder wenn Sie über einen Firmen-Webproxy mit SSL-Überprüfung eine Verbindung zu einer externen Quelle herstellen), verweisen Sie Ihre Variable SSL_CERT_FILE env auf Ihre Zertifikatskette . Dies erfordert höchstwahrscheinlich nur das Exportieren Ihres Stammzertifikats aus Ihrem Zertifikatspeicher (System Keychain unter macOS) an einen von Ihrer Shell aus zugänglichen Speicherort, d. H .:
export SSL_CERT_FILE=~/RootCert.pem
Das einzige, was für mich unter Windows und der Version Ruby= 1.9) funktioniert hat, ist das Herunterladen einer Cacert-Datei von http://guides.rubygems.org/ssl- Zertifikat-Update/
Führen Sie den folgenden Befehl aus, bevor Sie die Bundle-Installation ausführen
bundle config --global ssl_ca_cert /path/to/file.pem
Rails-assets
VerwendenWenn Sie Ihr Vermögen mit https://Rails-assets.org/
Verwalten, werden Ihnen keine Antworten helfen. Auch das Konvertieren in http
wird nicht helfen.
Die einfachste Lösung ist die Verwendung dieser Quelle, http://insecure.Rails-assets.org
. Dies wurde in ihrer Homepage erwähnt.