SSL_connect zurückgegeben = 1 errno = 0 state = SSLv3-Leseserverzertifikat B: Zertifikatüberprüfung fehlgeschlagen


281

Ich verwende Authlogic-Connect für Anmeldungen von Drittanbietern. Nach dem Ausführen geeigneter Migrationen scheinen Twitter / Google / Yahoo-Anmeldungen gut zu funktionieren, aber die Facebook-Anmeldung löst eine Ausnahme aus:

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

Das Entwicklerprotokoll zeigt

OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed):
  app/controllers/users_controller.rb:37:in `update'

Bitte vorschlagen..



Hier ist die beste Lösung, die ich bisher finden konnte stackoverflow.com/a/16983443/11792
Pavel Nikolov

Antworten:


138

Beim Versuch, den JQuery-Generator für Rails 3 zu verwenden, ist ein ähnliches Problem aufgetreten

Ich habe es so gelöst:

  1. Holen Sie sich das CURL Certificate Authority (CA) -Paket. Sie können dies tun mit:

    • sudo port install curl-ca-bundle [wenn Sie MacPorts verwenden]
    • oder ziehen Sie es einfach direkt nach unten wget http://curl.haxx.se/ca/cacert.pem
  2. Führen Sie den Ruby-Code aus, der versucht, die SSL-Zertifizierung zu überprüfen : SSL_CERT_FILE=/opt/local/etc/certs/cacert.pem rails generate jquery:install. In Ihrem Fall möchten Sie dies entweder als Umgebungsvariable festlegen, die der Server irgendwo aufnimmt, oder etwas hinzufügen, das ENV['SSL_CERT_FILE'] = /path/to/your/new/cacert.pemin Ihrer Datei environment.rb enthalten ist.

Sie können auch installieren nur die CA - Dateien (ich habe nicht versucht) an die OS - es gibt lange Anweisungen hier - dies in ähnlicher Weise arbeiten sollte, aber ich habe das nicht persönlich ausprobiert.

Grundsätzlich besteht das Problem darin, dass ein Webdienst mit einem Zertifikat antwortet, das für eine Zertifizierungsstelle signiert ist, die OpenSSL nicht überprüfen kann.


1
Dies funktionierte auch für mich, als ich versuchte, mit Ruby Net :: IMAP über ein Ruby-Skript eine Verbindung zu meinem Google Mail-Konto herzustellen. Danke.
Jignesh Gohel

4
Ja, das funktioniert gut mit Ruby-1.9.3. Ich habe es meiner Bash-Konfiguration hinzugefügt. export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cert.pem
andersjanmyr

5
Ich hatte nicht / usr / local / etc / openssl, also lief ich sudo curl http://curl.haxx.se/ca/cacert.pem >> /usr/local/etc/cacert.pemgefolgt von export SSL_CERT_FILE=/usr/local/etc/cacert.pem
Lilith River

4
Bei der Entwicklung auf meinem Mac habe ich gerade SSL_CERT_FILE=/usr/local/etc/openssl/cert.pemdie .envDatei meiner App und voila hinzugefügt - alles glücklich.
Dave Sag

8
Ich schätze die Ironie, mit wget Curl-Zertifikate herunterzuladen.
Trey

135

Wenn Sie RVM unter OS X verwenden, müssen Sie wahrscheinlich Folgendes ausführen:

rvm osx-ssl-certs update all

Weitere Informationen finden Sie hier: http://rvm.io/support/fixing-broken-ssl-certificates

Und hier ist die vollständige Erklärung: https://github.com/wayneeseguin/rvm/blob/master/help/osx-ssl-certs.md


Aktualisieren

Unter Ruby 2.2 müssen Sie Ruby möglicherweise von der Quelle neu installieren, um dies zu beheben. So geht's (durch 2.2.3Ihre Ruby-Version ersetzen ):

rvm reinstall 2.2.3 --disable-binary

Gutschrift an https://stackoverflow.com/a/32363597/4353 und Ian Connor .


2
Hier ist eine viel umfassendere Beschreibung mit Alternativen: railsapps.github.io/openssl-certificate-verify-failed.html
Peter P.

FEHLER: Das RVM-Update wurde entfernt. Siehe stattdessen 'rvm get' und rvm 'rubygems' CLI API
Yang

@ user432506 Wie bist du zu diesem Fehler gekommen? Ich verwende die neueste stabile RVM und sie funktioniert immer noch.
Htanata

4
Das würde eine Weile funktionieren und dann für mich scheitern. Was für mich funktioniert hat, lief, rvm reinstall 2.2.0 --disable-binaryaber dann müssen Sie die Installation bündeln und neu starten.
Ian Connor

2
Dies war ein großer Lebensretter und sollte die akzeptierte Antwort sein.
Siraris

129

So können Sie das Problem unter Windows beheben: https://gist.github.com/867550 (erstellt von Fletcher Nichol)

Auszug:

Der manuelle Weg (langweilig)

Laden Sie die cacert.pemDatei von http://curl.haxx.se/ca/cacert.pem herunter . Speichern Sie diese Datei unter C:\RailsInstaller\cacert.pem.

Machen Sie Ruby jetzt durch die Einstellung auf Ihr Zertifizierungsstellenpaket aufmerksam SSL_CERT_FILE. Geben Sie Folgendes ein, um dies in Ihrer aktuellen Eingabeaufforderungssitzung festzulegen:

set SSL_CERT_FILE=C:\RailsInstaller\cacert.pem

Um dies zu einer dauerhaften Einstellung zu machen, fügen Sie diese in Ihr Bedienfeld ein .


6
Danke dir. Dies ist außerordentlich nützlich und auch sehr einfach.
John

Die obige Lösung hat mir nicht geholfen. Dies ist eine bessere Anleitung für Windows: stackoverflow.com/questions/5720484/…
Sprachprofi

@Sprachprofi Die Lösung, mit der Sie verknüpft sind, funktioniert jeweils nur für ein Rails-Projekt (da Sie direkt auf dieses Zertifikat verweisen). Das Wesentliche, mit dem ich verlinkt habe (erstellt von Fletcher Nichol), ermöglicht es, jedes Projekt / Juwel abzudecken, das nach einem Zertifikat sucht.
Ryanjones

31

Ruby kann keine vertrauenswürdigen Stammzertifikate finden.

In diesem Blogbeitrag finden Sie eine Lösung: " Ruby 1.9 und der SSL-Fehler ".

Die Lösung besteht darin, den curl-ca-bundlePort zu installieren, der dieselben von Firefox verwendeten Stammzertifikate enthält:

sudo port install curl-ca-bundle

und sagen Sie Ihrem httpsObjekt, es zu verwenden:

https.ca_file = '/opt/local/share/curl/curl-ca-bundle.crt'

Beachten Sie, dass Sie, wenn Ihr Code unter Ubuntu ausgeführt werden soll, ca_pathstattdessen das Attribut mit dem Standardspeicherort für Zertifikate festlegen müssen /etc/ssl/certs.


8
Dies scheint auch unter Windows zu passieren. In diesem Fall funktioniert die dort empfohlene Lösung nicht.
Bob Aman

24

Der Grund, warum Sie diesen Fehler unter OSX erhalten, ist der von rvm installierte Ruby.

Wenn Sie unter OSX auf dieses Problem stoßen, finden Sie in diesem Blog-Beitrag eine ausführliche Erklärung:

http://toadle.me/2015/04/16/fixing-failing-ssl-verification-with-rvm.html

Die Kurzversion ist, dass RVM für einige Versionen von Ruby vorkompilierte Binärdateien herunterlädt, die nach Zertifikaten am falschen Speicherort suchen. Indem Sie RVM zwingen, die Quelle herunterzuladen und auf Ihrem eigenen Computer zu kompilieren, stellen Sie sicher, dass die Konfiguration für den Zertifikatspeicherort korrekt ist.

Der Befehl dazu lautet:

rvm install 2.2.0 --disable-binary

Wenn Sie die betreffende Version bereits haben, können Sie sie erneut installieren mit:

rvm reinstall 2.2.0 --disable-binary

(Ersetzen Sie natürlich Ihre Ruby-Version nach Bedarf).


Das hat bei mir funktioniert. Der Blog-Beitrag, auf den Sie zeigen, ist ebenfalls nützlich, danke!
Cristian

2
Das hat bei El Capitan funktioniert. Ich implodierte rvm (rvm implodierte). Neu installiert mit \curl -sSL https://get.rvm.io | bash -s stable --autolibs=homebrewund dann rvm install <ruby-version> --disable-binary Irgendwann habe ich es auch getan, rvm get headda dies einige aktuelle Probleme sind.
Rylanb

Nur diese Lösung funktionierte für mich, da ich ursprünglich Ruby 2.0.0 auf El Capitan hatte und aus irgendeinem Grund die ältere Version nicht einmal mit der richtigen Version funktionierte SSL_CERT_FILE. Danach rvm install 2.2.0 --disable-binarywurde das Problem behoben.
Laimison

20

Das Problem ist, dass Ruby kein vertrauenswürdiges Stammzertifikat finden kann. Ab 1.9 prüft Ruby dies. Sie müssen sicherstellen, dass Sie das Curl-Zertifikat in Form einer PEM-Datei auf Ihrem System haben. Sie müssen auch sicherstellen, dass sich das Zertifikat an dem Ort befindet, an dem Ruby es erwartet. Sie erhalten dieses Zertifikat unter ...

http://curl.haxx.se/ca/cacert.pem

Wenn Sie ein RVM- und OSX-Benutzer sind, hängt der Speicherort Ihrer Zertifikatdatei davon ab, welche Ruby-Version Sie verwenden. Das explizite Festlegen des Pfads mit: ca_path ist eine schlechte Idee, da Ihr Code bei der Produktion nicht portierbar ist. Dort möchten Sie Ruby ein Zertifikat am Standardspeicherort zur Verfügung stellen (und davon ausgehen, dass Ihre Entwickler wissen, was sie tun). Mit dtruss können Sie herausfinden, wo das System nach der Zertifikatdatei sucht.

In meinem Fall suchte das System nach der Zertifizierungsdatei in

/Users/stewart.matheson/.rvm/usr/ssl/cert.pem

Das MACOSX-System würde jedoch ein Zertifikat in erwarten

/System/Library/OpenSSL/cert.pem

Ich habe das heruntergeladene Zertifikat in diesen Pfad kopiert und es hat funktioniert. HTH


2
Für mich auf Ubuntu 12.04 ist der Zertifizierungspfad, der funktioniert~/.rvm/usr/ssl/cert.pem
Nazar Hussain

Wie können Sie mit dtruss herausfinden, wo das System nach dem Zertifikat sucht?
Pingu

@pingu kann sich nicht an den genauen Befehl erinnern, mit dem Sie druss ausführen, und Sie weisen ihn an, den Ruby-Prozess auszuführen, den er "inspizieren" soll. Die Ausgabe ist sehr ausführlich, aber im Grunde können Sie jeden Systemaufruf sehen, den Ruby ausführt. Einer der Aufrufe ist ein Aufruf einer Lesedatei, der auf eine nicht vorhandene Datei verweist. Verschieben Sie das Zertifikat hierher oder erstellen Sie einen Link, und Sie sollten bereit sein, loszulegen.
Stewart

Ruby sollte unter cacert.pemOS X nicht nach einem suchen. OS X verwendet es nicht cacert.pem. System- und Benutzerzertifikate werden in der KeyChain gespeichert. Ruby sollte unter OS X in
KeyChain

Was ist der beste Weg, dies zu tun? Können Sie ein Beispiel posten?
Stewart

19

Das neue zertifizierte Juwel soll dies beheben:

https://github.com/stevegraham/certified


Funktioniert mit Ruby 2.0.0p481 (08.05.2014) [i386-mingw32]
Evmorov

1
Funktioniert nicht für mich mit Rails 4.1.9, Ruby-2.1.5. Ich habe es der Gemfile bundlehinzugefügt, explizit hinzugefügt, require "certified"nur um sicherzugehen, und nichts ändert sich. Was vermisse ich?
Isaac Betesh

Ruby sollte unter cacert.pemOS X nicht nach einem suchen. OS X verwendet es nicht cacert.pem. System- und Benutzerzertifikate werden in der KeyChain gespeichert. Ruby sollte unter OS X in KeyChain integriert werden. OpenSSL hat noch nie eine cacert.pem. Mir ist nicht klar, warum eine Software OpenSSL dafür verwenden würde.
JWW

18

Fügen Sie einfach gem 'zertifiziert' in Ihre gemfile ein und führen Sie die Bundle-Installation aus.

  1. Edelstein ' zertifiziert '
  2. Bundle installieren

Bestätigung, dass dies El Capitan geholfen hat. Vielen Dank!
mcmlxxxiii

Es funktioniert perfekt mit Rails und Debian :) Vielen Dank!
Szymon Rut

17

Unter Mac OS X Lion mit dem neuesten Macport:

sudo port install curl-ca-bundle  
export SSL_CERT_FILE=/opt/local/share/curl/curl-ca-bundle.crt  

Führen Sie dann den fehlgeschlagenen Job erneut aus.

Beachten Sie, dass sich der Speicherort der Zertifizierungsdatei offenbar geändert hat, seit Eric G am 12. Mai geantwortet hat.


Nach all der Suche und einer Vielzahl von Versuchen war dies das einzige, was das Problem löste. Vielen Dank!
Shawnwall

1
cool, das hat es behoben. Aber solange openssl mit homebrew installiert ist, müssen Sie export SSL_CERT_FILE=/usr/local/etc/openssl/cacert.pemIhrer .profile- oder .bashrc-Datei ein
hinzufügen

14

Ein Einzeiler behebt es für Windows in einer Admin-Eingabeaufforderung

choco install wget(siehe zuerstocolatey.org )

wget http://curl.haxx.se/ca/cacert.pem -O C:\cacert.pem && setx /M SSL_CERT_FILE "C:\cacert.pem"

Oder machen Sie einfach Folgendes:

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

Milanios Methode:

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

gem install [NAME_OF_GEM]

1
Kleine Verbesserung - Sie müssen nur Ruby aktualisieren und dann können Sie die https-Quelle wieder hinzufügen - das hat bei mir wie ein Zauber funktioniert : Edelsteinquellen -r rubygems.org => Edelsteinquellen -a Rubingems.org => Edelstein-Update - System => Edelsteinquellen -r rubygems.org => Edelsteinquellen -a rubygems.org => Edelsteininstallation [NAME_OF_GEM]
milanio

13

Nun, das hat bei mir funktioniert

rvm pkg install openssl
rvm reinstall 1.9.2 --with-openssl-dir=$rvm_path/usr

Mit der openssl-Implementierung meines Ubuntu 12.04 stimmt etwas nicht


3
Dies funktioniert, aber ich hatte bis Ende mit diesem: curl -O http://curl.haxx.se/ca/cacert.pem, mv cacert.pem cert.pem,mv cert.pem $rvm_path/usr/ssl
Raf

Arbeitete für mich, Mac OS X Yosemite. Vielen Dank!
Anevaude

12

Obwohl ich weiß, dass es sich um eine eher lahme Lösung handelt, teile ich dies immer noch, da anscheinend nur sehr wenige Personen, die hier antworten, Windows verwenden , und ich denke, einige Windows-Benutzer (ich eingeschlossen) würden einen einfachen und intuitiven Ansatz schätzen.

require 'openssl'
puts OpenSSL::X509::DEFAULT_CERT_FILE

Das zeigt an, wo Ihr openssl nach der Zertifikatdatei sucht. Mein Name ist nicht Luis, aber meiner war C:/Users/Luis/Code/luislavena/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0l/ssl/cert.pem. Der Pfad kann je nach Umgebung unterschiedlich sein (z . B. openknapsackanstelle von luislavena).

Der Pfad hat sich auch nach set SSL_CERT_FILE=C:\foo\bar\baz\cert.pemder Konsole nicht geändert , also ... habe ich das Verzeichnis C:\Users\Luis\Code\luislavena\knap-build\var\knapsack\software\x86-windows\openssl\1.0.0l\ssl auf meiner lokalen Festplatte erstellt und eine Zertifizierungsdatei darin abgelegt.

So lahm es auch ist, das wird sicherlich funktionieren.


2
Brillant. Hacky, aber das war das einzige, was mein Problem gelöst hat.
Daniel Magliola

Schöne Art zu debuggen ... Für mich war der Benutzer "Justin". Googeln zeigt, dass dies ein bekanntes Problem mit RubyInstaller zu sein scheint. Leider hat das Erstellen dieses Verzeichnisses (+ PEM-Datei) das Problem für mich nicht gelöst
Wouter

12

Ich versuche , habe installieren curl-ca-bundlemit brew, aber das Paket ist nicht verfügbar mehr:

$ brew install curl-ca-bundle
Error: No available formula for curl-ca-bundle 
Searching formulae...
Searching taps...

Die Lösung, die für mich auf dem Mac funktioniert hat, war:

 $ cd /usr/local/etc/openssl/certs/
 $ sudo curl -O http://curl.haxx.se/ca/cacert.pem

Fügen Sie diese Zeile in Ihr ~/.bash_profile(oder ~/.zshrcfür zsh) ein:

export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem

Aktualisieren Sie dann Ihr Terminal:

$ source ~/.bash_profile

1
Das hat bei mir funktioniert - aber der Weg ist falsch. Sollte sein:export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem
dnlmzw

2
Dies ist aufgrund seiner Einfachheit eine schöne Lösung. ~/.bash_profileWenn Sie auf das hinzugefügte Zertifikat in verweisen , wird eine Erinnerung daran hinterlassen, was hinzugefügt wurde (und vor allem wo), wenn weitere Aktualisierungen erforderlich sind.
Auxbuss

Das hat bei mir funktioniert. @dnlmzw der Pfad war in Ordnung für mich, aber das hängt natürlich von Ihrem Setup ab. Vielen Dank!
Herz des Seins

hat bei mir nicht funktioniert, als ich versucht habe, meinen Gem-Quellen eine private Gem-Server-URL hinzuzufügen, die ein selbstsigniertes Zertifikat verwendet. OSX 10.11.6 + rbenv
Sixty4bit

12

Hier ist eine weitere Option zum Debuggen.

Stellen Sie sicher, dass Sie dies niemals in einer Produktionsumgebung verwenden, da dies die Vorteile der Verwendung von SSL in erster Linie zunichte macht. Dies ist immer nur in Ihrer lokalen Entwicklungsumgebung gültig.

require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

26
Downvoted: Ja, das funktioniert, aber die Barriere für die Installation eines gültigen CA-Bundles und die tatsächliche Lösung des Problems ist so gering, dass eine solche Lösung, die die Sicherheit von SSL nahezu vollständig ungültig macht, nur dann implementiert werden sollte, wenn Sie dies tun Sie befinden sich in einer Umgebung, in der auf die Zertifizierungsstelle nicht zugegriffen werden kann (und selbst dann sollten Sie eine lokale Zertifizierungsstelle erstellen, auf die beide Endpunkte zugreifen können).
Yaauie

10
Der SSL-Schutz wurde nicht vollständig entfernt, sondern vollständig entfernt. Mach das niemals.
Drbrain

15
Zum Debuggen ist es ausreichend
Rickyduck

1
Dies erzeugt eine Warnung jetzt in 1.9
Ivan

2
Dies ist eine schlechte Lösung für die Produktionsarbeit über das eigentliche Internet, aber es ist nachdrücklich nicht wahr, dass "Sie genauso gut überhaupt kein SSL verwenden können". Der über das Kabel verschlüsselte Verkehr ist besser als der Verkehr im Freien. Ja, Sie haben die Möglichkeit von Man-in-the-Middle-Angriffen, aber diese sind mindestens eine Stufe schwerer aufzustehen, als einfach den Klartext-Verkehr zu belauschen, während er vorbeigleitet.
Mark Reed

10

Ich hatte das gleiche Problem bei der Arbeit an einem Ruby-Projekt. Ich benutze Windows 7 64bit.

Ich habe das gelöst durch:

  1. Herunterladen der Datei cacert.pem von http://curl.haxx.se/ca/cacert.pem .
  2. Diese Datei wurde in C: /RubyCertificates/cacert.pem gespeichert
  3. Setzen Sie dann meine Umgebungsvariable "SSL_CERT_FILE" auf "C: \ RubyCertificates \ cacert.pem".

Quelle: https://gist.github.com/fnichol/867550


Da es sich um Windows handelt, sollten Backslahes im Wert der Umgebungsvariablen verwendet werden.
Christian Baumann

Dies ist die einzige Lösung, die funktioniert hat, um "Bundle" für mich zu beheben, nachdem der Rubygems SSL-Fehler
behoben wurde

7

Die einfachste Antwort, die für mich funktioniert hat, war diese

sudo apt-get install openssl ca-certificates

Und voila !!!


1
Ich wünschte, ich könnte mehr als einmal abstimmen, weil du mir so viel Zeit gespart hast!
Stephen

1
@ Stephen - ich wünschte du könntest es auch :-). Es hat mir viel Zeit gespart, also dachte ich, ich würde es hier posten und es könnte auch jemand anderem helfen.
Pratik Bothra

7

OS X 10.8.x mit Homebrew:

brew install curl-ca-bundle
brew list curl-ca-bundle
cp /usr/local/Cellar/curl-ca-bundle/1.87/share/ca-bundle.crt /usr/local/etc/openssl/cert.pem

1
Funktioniert auch für mich am 10.9.
Sami Samhuri

1
Ok für mich, OS X 10.9.1. Genial!
Rogeriopradoj

Etwas ist schwer kaputt, wenn Sie nach zufälligen Lösungen suchen müssen, um diese dummen Probleme zu beheben. Alle diese Antworten haben etwas völlig anderes und alle schienen den Menschen irgendwann zu helfen. WTF?
Serggserg

13
Curl-Ca-Bundle wurde aus dem Gebräu entfernt
Fa11enAngel


4

Das hat bei mir funktioniert. Wenn Sie rvm verwenden und brauen:

rvm remove 1.9.3
brew install openssl
rvm install 1.9.3 --with-openssl-dir=`brew --prefix openssl`

4

Ich bin auf dieses Problem und die vorgeschlagene Lösung von gestoßen rvm osx-ssl-certs update all hat nicht funktioniert, obwohl ich ein RVM-Benutzer unter OSX bin.

Das Update, das bei mir funktioniert hat, war die Neuinstallation der neuesten Version von openssl:

brew update
brew remove openssl
brew install openssl

4

Ich habe dieses Problem behoben, indem ich es im Terminal ausgeführt habe. Die vollständige Beschreibung finden Sie hier

rvm install 2.2.0 --disable-binary

3

OSX-Lösung:

Installieren Sie die neueste stabile Version von rvm

rvm get stable

Verwenden Sie den Befehl rvm, um die Zertifikate automatisch zu lösen

rvm osx-ssl-certs update all

1
Ich habe es versucht und es hat bei mir nicht funktioniert. Hier ist meine Lösung: stackoverflow.com/a/16741712/62
Liron Yahdav

Arbeitete für mich nach der Installation von Ruby 2.0.0 über RVM.
Chris Peters

3

Wenn Sie Ihre Rails-App lokal ausführen, fügen Sie diese Zeile einfach unten in application.rb hinzu.

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

Danach können Sie die App ohne Probleme verwenden. Sie können es einen Hack nennen, aber es wird nicht empfohlen. Nur verwenden, wenn Sie lokal ausführen müssen


2

Hier ist, was ich getan habe, was geholfen hat, wenn Sie speziell ein Problem mit Leopard haben.

Mein Zertifikat war alt und musste aktualisiert werden. Ich habe das heruntergeladen:

http://curl.haxx.se/ca/cacert.pem

Dann ersetzte mein Zertifikat, das hier auf Leopard gefunden wurde:

/usr/share/curl/curl-ca-bundle.crt

Laden Sie alles neu, was Sie haben, um darauf zuzugreifen, und Sie sollten bereit sein, loszulegen!


2

Nur weil die Anweisungen für das, was für mich funktionierte, etwas anders waren, dachte ich, ich addiere meine 2 Cent:

Ich bin auf OS X Lion und benutze Macports und RVM

Ich habe curl-ca-bundle installiert:

sudo port install curl-ca-bundle

Dann habe ich meine Omniauth-Konfiguration so angepasst:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, APP_CONFIG['CONSUMER_KEY'], APP_CONFIG['CONSUMER_SECRET'],
           :scope => 'https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.profile',
           :ssl => {:ca_path => "/share/curl/curl-ca-bundle.crt"}
end

Sie könnten (und sollten wahrscheinlich) auf den gesamten CA Zoo ( ca-bundle.crt) verzichten und Google Internet Authority G2 in verwenden :ssl => {:ca_path => "/share/curl/curl-ca-bundle.crt"}. Dies ist die einzige, die zur Zertifizierung von Verbindungen zu Google benötigt wird.
JWW

2

Wenn Sie in / usr / local / etc / openssl einen symbolischen Link haben, der auf cert.pem verweist, versuchen Sie Folgendes:

ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE" (should be /usr/local/etc/openssl)
cd /usr/local/etc/openssl
wget http://curl.haxx.se/ca/cacert.pem
ln -s cacert.pem 77ee3751.0 (77ee3751.0 is my symbolic link, should depend on the openssl version)

2

Was für mich funktioniert hat, ist eine Kombination von Antworten, nämlich:

# Reinstall OpenSSL
brew update
brew remove openssl
brew install openssl
# Download CURL CA bundle
cd /usr/local/etc/openssl/certs
wget http://curl.haxx.se/ca/cacert.pem
/usr/local/opt/openssl/bin/c_rehash
# Reinstall Ruby from source
rvm reinstall 2.2.3 --disable-binary

1

Ich hatte einige Tage lang Probleme und hackte herum. Dieser Link hat sich für mich als äußerst hilfreich erwiesen. Es hat mir geholfen, ein erfolgreiches Upgrade des SSL unter MAC OS X 9 durchzuführen.


1

Manchmal ist es nicht immer das Problem von rvm in MAC OSX. Wenn Sie .rvm entfernen, das Problem immer noch (insbesondere während Sie Daten von einer Zeitmaschine sichern), können Sie dies auf diese Weise versuchen.

1.brew update
2.brew install openssl

1

Das Hinzufügen gem 'certified', '~> 1.0'zu Gemfileund Laufen hat bundledieses Problem für mich gelöst.

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.