Ich versuche, das Michael Hartl-Tutorial zu machen. Wenn ich versuche, Rails 3.2.14 in meinem Gemset zu installieren, erhalte ich folgendes Problem:
$ gem installiere Rails -v 3.2.14
FEHLER: Konnte kein gültiges Juwel 'Rails' (= 3.2.14) finden, hier ist der Grund:
Daten können nicht von https://rubygems.org/ heruntergeladen werden. - SSL_connect zurückgegeben = 1 errno = 0 state = SSLv3-Server-Zertifikat lesen B: Zertifikatüberprüfung fehlgeschlagen ( https://s3.amazonaws.com/production .s3.rubygems.org/specs.4.8.gz )
Nach dem Googeln fand ich heraus, dass ich eine Nicht-SSL-Quelle für Rubygems verwenden konnte.
Sudo gem sources -a http://rubygems.org
Als ich dann erneut versuchte, Rails zu installieren, war es erfolgreich. Ich habe das Thema aber trotzdem als Warnung erhalten:
WARNUNG: Daten aus ' https://rubygems.org/ ' können nicht abgerufen werden: SSL_connect zurückgegeben = 1 errno = 0 state = SSLv3-Server-Zertifikat lesen B: Zertifikatprüfung fehlgeschlagen ( https: //s3.amazonaws .com/production.s3.rubygems.org/specs.4.8.gz )
Wie kann ich diese Warnung vollständig entfernen?
Ich verwende folgendes:
Stellen Sie sicher, dass Sie die neueste Version von rvm verwenden:
rvm get stable
Dann können Sie zwei Dinge tun:
Zertifikate aktualisieren:
rvm osx-ssl-certs update all
Rubygems aktualisieren:
rvm rubygems latest
Suchpfad für das Zertifikat:
cert_file=$(Ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE')
Zertifikat generieren:
security find-certificate -a -p /Library/Keychains/System.keychain > "$cert_file"
security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain >> "$cert_file"
Der gesamte Code: https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/osx-ssl-certs
Stellen Sie sicher, dass Sie das Paket ca-certificates
aktualisieren. (auf alten Systemen ist es möglicherweise nicht verfügbar - verwenden Sie kein altes System, das keine Sicherheitsupdates mehr erhält)
Die Ruby Installer Builds für Windows werden von Luis Lavena vorbereitet, und der Pfad zu den Zertifikaten zeigt Folgendes: C:/Users/Luis/...
check https://github.com/oneclick/rubyinstaller/issues/249 Weitere Informationen und diese Antwort https://stackoverflow.com/a/27298259/497756 für Fix.
Neueste Erkenntnisse ...
https://Gist.github.com/luislavena/f064211759ee0f806c88
Am wichtigsten ... download https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem
Überlegen Sie sich, wo Sie es halten sollen
C:\>gem which rubygems
C:/Ruby21/lib/Ruby/2.1.0/rubygems.rb
Dann kopieren Sie einfach die .pem-Datei in ../2.1.0/rubygems/ssl_certs/ und machen Sie weiter mit Ihrem Geschäft.
Gehe zu Link http://rubygems.org/pages/download
Wenn Sie die Nicht-SSL-Quelle verwenden möchten, entfernen Sie zunächst die HTTPS-Quelle und fügen Sie dann die HTTP-Quelle hinzu:
Sudo gem sources -r https://rubygems.org
Sudo gem sources -a http://rubygems.org
UPDATE:
Wie von mpapis angegeben, sollte dies nur als temporärer Workaround verwendet werden. Wenn Sie über die Nicht-SSL-Quelle auf RubyGems zugreifen, kann es einige Sicherheitsbedenken geben.
Sobald die Problemumgehung nicht mehr erforderlich ist, sollten Sie die SSL-Quelle wiederherstellen:
Sudo gem sources -r http://rubygems.org
Sudo gem sources -a https://rubygems.org
Unter Windows müssen Sie HTTP
source verwenden, um gem
zu aktualisieren, und dann wieder HTTPS
zu verwenden.
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: Warnung Ich bin nicht sicher, ob dies sicher ist . Weiß jemand, ob Ruby-Pakete signiert sind? Die akzeptierte Antwort sieht nach einer besseren Lösung aus.
Rubygems.org hat einen Leitfaden, in dem nicht nur beschrieben wird, wie dieses Problem behoben werden kann, sondern auch, warum so viele Leute es haben: SSL Certificate Update Der Grund für das Problem ist, dass rubygems.org auf einen sichereren Server umgestellt hat SSL-Zertifikat (SHA-2, das 256-Bit-Verschlüsselung verwendet). Das Befehlszeilenwerkzeug rubygems bündelt den Verweis auf das richtige Zertifikat. Daher können Rubygems selbst nicht mit einer älteren Version von Rubygems aktualisiert werden. Rubygems müssen zuerst manuell aktualisiert werden.
Finden Sie zuerst heraus, welche Rubygems Sie haben:
rubygems –v
Abhängig davon, ob Sie eine 1.8.x, 2.0.x oder 2.2.x haben, müssen Sie ein Update-Juwel namens „rubygems-update-XYZgem“ herunterladen, wobei XYZ die Version ist, die Sie benötigen Ausführen von 1.8 .x: download: https://github.com/rubygems/rubygems/releases/tag/v1.8.30 Ausführen von 2.0.x: download: https://github.com/rubygems/ rubygems/versions/tag/v2.0.15 Ausführen von 2.2.x: download: https://github.com/rubygems/rubygems/releases/tag/v2.2.3
Update-Juwel installieren:
gem install –-local full_path_to_the_gem_file
Update-Juwel ausführen:
update_rubygems --no-ri --no-rdoc
Überprüfen Sie, ob die Rubygems aktualisiert wurden:
rubygems –v
Update gem deinstallieren:
gem uninstall rubygems-update -x
An diesem Punkt können Sie in Ordnung sein. Möglicherweise verfügen Sie jedoch nicht über die neueste öffentliche Schlüsseldatei für das neue Zertifikat. Um dies zu tun:
Laden Sie das neueste Zertifikat herunter (derzeit AddTrustExternalCARoot-2048.pem) Von https://rubygems.org/pages/download . Alle Zertifikate befinden sich auch unter: https://github.com/rubygems/rubygems/tree/master/lib/rubygems/ssl_certs
Finden Sie heraus, wo Sie es ablegen können:
gem which rubygems
Legen Sie diese Datei an dieser Stelle im Verzeichnis "rubygems\ssl_certs" ab.
Gemäß rubygems commit werden die Zertifikate in spezifischere Verzeichnisse verschoben. Daher wird erwartet, dass sich das Zertifikat (AddTrustExternalCARoot-2048.pem) derzeit auf dem folgenden Pfad befindet lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem
Versuchen Sie, die Quell-Website für die Edelsteine zu verwenden, d. H. Rubygems.org. Verwenden Sie http anstelle von https. Diese Methode beinhaltet keine Arbeit wie das Installieren von Zertifikaten und all das.
Beispiel -
gem install typhoeus --source http://rubygems.org
Das funktioniert, aber es gibt eine Einschränkung.
Das Juwel ist installiert, aber die Dokumentation beruht nicht auf Zertifizierungsfehlern. Hier ist der Fehler, den ich bekomme
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)
Laufen gem update --system
hat für mich funktioniert
Durch die einfache Deinstallation und Neuinstallation von openssl mit Homebrew wurde dieses Problem für mich gelöst.
brew uninstall --force openssl
brew install openssl
Wenn Sie Windows verwenden, öffnen Sie https://rubygems.org/ mit dem Internet Explorer.
Klicken Sie auf Sicherheitsinformationen und importieren Sie das Zertifikat. Unter dem Strich ist Ihre Zertifizierungskette veraltet und Sie müssen dieses neue Zertifikat hinzufügen. Beachten Sie, dass dies keine Sicherheitsverletzung ist, solange Sie das Zertifikat als vertrauenswürdig prüfen können.
Aktualisieren Sie den cert.pem
auf die neueste Datei, die von cURL bereitgestellt wird: 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
Dieser genaue Fehler ist mir heute auf einer virtuellen Ubuntu-Maschine auf VirtualBox passiert. Ich habe die meisten der oben gezeigten Lösungen ausprobiert, bevor ich bemerkte, dass ich aus einem sehr alten suspendierten Zustand wieder aufgenommen hatte und meine Uhr um viele Tage ausgeschaltet war.
Durch das Aktualisieren der Uhr wurde mein Problem sofort behoben. Hier ist der Befehl, den ich in meinem Fall verwendet habe:
Sudo-Dienst ntp stop && Sudo ntpdate pool.ntp.org && Sudo-Dienst ntp start
In meinem Fall waren die Ubuntu CA-Zertifikate nicht mehr aktuell. Ich habe es durch Laufen behoben:
Sudo update-ca-certificates
Versuchen
gem update --system
Hoffe, es löst das Problem.
Der besondere Fall von RubyGems (dem Befehlszeilentool) besteht darin, dass die Vertrauenszertifikate innerhalb seines Codes gebündelt werden müssen, sodass RubyGems eine Verbindung mit den Servern herstellen kann, selbst wenn das Basisbetriebssystem die Identität dieser nicht überprüfen kann.
Bis vor wenigen Monaten wurde dieses Zertifikat von einer Zertifizierungsstelle bereitgestellt, neuere Zertifikate werden jedoch von einer anderen Zertifizierungsstelle bereitgestellt.
Aus diesem Grund müssten vorhandene Installationen von RubyGems vor dem Wechsel des Zertifikats aktualisiert werden und genügend Zeit für die Verbreitung der Änderung (und für die Aktualisierung) geben.
Jeder kann seine Lösung finden, indem er die einfachen Schritte ausführt, die im nachstehenden Link angegeben sind
Ich hatte das gleiche Problem, als ich versuchte, den Gurkenedel zu installieren. Ich bemerkte jedoch, dass der Bundler gem bereits mit Ruby 2.0 installiert war ..... Ich erstellte im Projektordner eine Gemfile.rb mit den erforderlichen Gems und folgte diesen Schritten
Alle benötigten Edelsteine installiert.
Für Windows Benutzer:
Nach der erfolgreichen Installation von Ruby 2.2.3 (+ rubygems 2.5.1) auf einer Testmaschine mit Zugang zum Internet hatte ich diesen SSL-Fehler, als ich Bundler auf einer Produktionsmaschine innerhalb des Netzwerks installierte.
Da ich Netzwerkzugriffsbeschränkungen hatte und es keine Möglichkeit gab, die Einstellungen für den SSL-Zugriff zu ändern, und basierend auf den Fehlernachrichten habe ich die folgenden Schritte ausgeführt, um die Installation des Bundlers abzuschließen. __ , aber es hat funktioniert ...).
Laden Sie die folgenden Dateien über einen Computer mit uneingeschränktem Zugriff auf das Internet herunter:
Ich habe diese Dateien auf einem Intranetserver hinzugefügt, wobei die Ordnerstruktur der obigen Links beibehalten wurde:
spec.4.8.gz e latest_specs.4.8.gz
bundler-1.11.2.gemspec.rz
bundler-1.11.2.gem
Dann habe ich mein Intranet für den Zugriff auf die Gem-Quelle hinzugefügt:
gem sources -a http://mydomain.com.br
Ich habe mit dem Erfolg den "gem install bundler" nach der Installation ausgeführt, alles was ich brauchte, war mein Intranet vom gem zu entfernen:
gem sources -r http://mydomain.com.br
Ich hoffe, dass dies in einer ähnlichen Situation nützlich ist ....
Ansatz/Einzeiler, der automatisiert werden kann, um Edelsteine über HTTP anstelle von HTTPS herunterzuladen:
printf -- '---\n:sources:\n- http://rubygems.org\n' | tee ~/.gemrc
Oder kann durch eine Firewall wie ich verhindert werden. Versuche dies:
Sudo gem installieren --http-proxy http: // localhost: port cocoapods -V
Installieren Sie CSW-Zertifikate vor der Installation von 'gem'.
pkgutil -yi CSWcacertificates
Wenn Sie ein Ruby-Kit verwenden, das nicht von OpenCSW stammt, kann Ihre Ruby-Version erwarten, die Zertifikatsdatei an einem anderen Ort zu finden. In diesem Fall habe ich einfach die /etc/opt/csw/ssl/cert.pem von OpenCSW mit dem erwarteten Ort verknüpft.
Prüfen Sie, wo Ruby erwartet, es zu finden:
export cf=`Ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE'` && echo $cf
Wenn es eine Diskrepanz gibt, verknüpfen Sie es:
ln -s /etc/opt/csw/ssl/cert.pem $cf && file $cf
Stellen Sie sicher, dass Sie Ruby mit der Option --disable-binary installiert haben. Wenn nicht, deinstallieren Sie es und installieren Sie es neu.
mehr Infos hier
Als Windows 10-Benutzer folgte ich Dheerendras answer und es funktionierte für mich eines Tages. Am nächsten Tag erlebte ich das Problem erneut und sein Fix funktionierte nicht. Für mich bestand das Update darin, bundler
mit zu aktualisieren:
gem update bundler
Ich glaube, meine Version von bundler
war mehr als ein paar Monate alt.
Die Antwort ist nicht mehr gültig. Da ich jetzt auf das Problem mit älteren Windows Ruby gestoßen bin, werde ich die Antwort posten.
Als ich einen Activesupport-Edelstein installieren wollte:
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)
Die folgenden Schritte müssen nur die Zertifikate aus neueren Fenstern Ruby ..__ kopieren. Nehmen Sie den neuesten Ruby (oder zumindest Ruby 2.4.0) und führen Sie folgende Schritte aus:
kopieren Sie Zertifikate aus diesen Verzeichnissen (passen Sie sich Ihren Bedürfnissen an):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
zum Zielort (wieder an das anpassen, was Sie brauchen):C:\prg_sdk\rubies\Ruby231-p112-x64\lib\Ruby\2.3.0\rubygems\ssl_certs