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..
Antworten:
Beim Versuch, den JQuery-Generator für Rails 3 zu verwenden, ist ein ähnliches Problem aufgetreten
Ich habe es so gelöst:
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]wget http://curl.haxx.se/ca/cacert.pem
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, dasENV['SSL_CERT_FILE'] = /path/to/your/new/cacert.pem
in 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.
quelle
export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cert.pem
sudo curl http://curl.haxx.se/ca/cacert.pem >> /usr/local/etc/cacert.pem
gefolgt vonexport SSL_CERT_FILE=/usr/local/etc/cacert.pem
SSL_CERT_FILE=/usr/local/etc/openssl/cert.pem
die.env
Datei meiner App und voila hinzugefügt - alles glücklich.Wenn Sie RVM unter OS X verwenden, müssen Sie wahrscheinlich Folgendes ausführen:
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.3
Ihre Ruby-Version ersetzen ):Gutschrift an https://stackoverflow.com/a/32363597/4353 und Ian Connor .
quelle
rvm reinstall 2.2.0 --disable-binary
aber dann müssen Sie die Installation bündeln und neu starten.So können Sie das Problem unter Windows beheben: https://gist.github.com/867550 (erstellt von Fletcher Nichol)
Auszug:
quelle
Ruby kann keine vertrauenswürdigen Stammzertifikate finden.
In diesem Blogbeitrag finden Sie eine Lösung: " Ruby 1.9 und der SSL-Fehler ".
quelle
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:
Wenn Sie die betreffende Version bereits haben, können Sie sie erneut installieren mit:
(Ersetzen Sie natürlich Ihre Ruby-Version nach Bedarf).
quelle
\curl -sSL https://get.rvm.io | bash -s stable --autolibs=homebrew
und dannrvm install <ruby-version> --disable-binary
Irgendwann habe ich es auch getan,rvm get head
da dies einige aktuelle Probleme sind.SSL_CERT_FILE
. Danachrvm install 2.2.0 --disable-binary
wurde das Problem behoben.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 ...
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
Das MACOSX-System würde jedoch ein Zertifikat in erwarten
Ich habe das heruntergeladene Zertifikat in diesen Pfad kopiert und es hat funktioniert. HTH
quelle
~/.rvm/usr/ssl/cert.pem
cacert.pem
OS X nicht nach einem suchen. OS X verwendet es nichtcacert.pem
. System- und Benutzerzertifikate werden in der KeyChain gespeichert. Ruby sollte unter OS X inDas neue zertifizierte Juwel soll dies beheben:
https://github.com/stevegraham/certified
quelle
bundle
hinzugefügt, explizit hinzugefügt,require "certified"
nur um sicherzugehen, und nichts ändert sich. Was vermisse ich?cacert.pem
OS X nicht nach einem suchen. OS X verwendet es nichtcacert.pem
. System- und Benutzerzertifikate werden in der KeyChain gespeichert. Ruby sollte unter OS X in KeyChain integriert werden. OpenSSL hat noch nie einecacert.pem
. Mir ist nicht klar, warum eine Software OpenSSL dafür verwenden würde.Fügen Sie einfach gem 'zertifiziert' in Ihre gemfile ein und führen Sie die Bundle-Installation aus.
quelle
Unter Mac OS X Lion mit dem neuesten Macport:
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.
quelle
export SSL_CERT_FILE=/usr/local/etc/openssl/cacert.pem
Ihrer .profile- oder .bashrc-Datei einEin Einzeiler behebt es für Windows in einer Admin-Eingabeaufforderung
choco install wget
(siehe zuerstocolatey.org )Oder machen Sie einfach Folgendes:
Milanios Methode:
quelle
Nun, das hat bei mir funktioniert
Mit der openssl-Implementierung meines Ubuntu 12.04 stimmt etwas nicht
quelle
curl -O http://curl.haxx.se/ca/cacert.pem
,mv cacert.pem cert.pem
,mv cert.pem $rvm_path/usr/ssl
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.
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.openknapsack
anstelle vonluislavena
).Der Pfad hat sich auch nach
set SSL_CERT_FILE=C:\foo\bar\baz\cert.pem
der Konsole nicht geändert , also ... habe ich das VerzeichnisC:\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.
quelle
Ich versuche , habe installieren
curl-ca-bundle
mitbrew
, aber das Paket ist nicht verfügbar mehr:Die Lösung, die für mich auf dem Mac funktioniert hat, war:
Fügen Sie diese Zeile in Ihr
~/.bash_profile
(oder~/.zshrc
für zsh) ein:Aktualisieren Sie dann Ihr Terminal:
quelle
export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem
~/.bash_profile
Wenn 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.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.
quelle
Ich hatte das gleiche Problem bei der Arbeit an einem Ruby-Projekt. Ich benutze Windows 7 64bit.
Ich habe das gelöst durch:
Quelle: https://gist.github.com/fnichol/867550
quelle
Die einfachste Antwort, die für mich funktioniert hat, war diese
Und voila !!!
quelle
OS X 10.8.x mit Homebrew:
quelle
Dann, wie dieser Blog-Beitrag andeutet,
" So heilen Sie das riskante Standard-HTTPS-Verhalten von Net :: HTTP "
Möglicherweise möchten Sie den
always_verify_ssl_certificates
Edelstein installieren , mit dem Sie einen Standardwert für festlegen könnenca_file
.quelle
Das hat bei mir funktioniert. Wenn Sie rvm verwenden und brauen:
quelle
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:
quelle
Ich habe dieses Problem behoben, indem ich es im Terminal ausgeführt habe. Die vollständige Beschreibung finden Sie hier
quelle
OSX-Lösung:
Installieren Sie die neueste stabile Version von rvm
Verwenden Sie den Befehl rvm, um die Zertifikate automatisch zu lösen
quelle
Wenn Sie Ihre Rails-App lokal ausführen, fügen Sie diese Zeile einfach unten in application.rb hinzu.
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
quelle
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:
Laden Sie alles neu, was Sie haben, um darauf zuzugreifen, und Sie sollten bereit sein, loszulegen!
quelle
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:
Dann habe ich meine Omniauth-Konfiguration so angepasst:
quelle
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.Wenn Sie in / usr / local / etc / openssl einen symbolischen Link haben, der auf cert.pem verweist, versuchen Sie Folgendes:
quelle
Was für mich funktioniert hat, ist eine Kombination von Antworten, nämlich:
quelle
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.
quelle
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.
quelle
Das Hinzufügen
gem 'certified', '~> 1.0'
zuGemfile
und Laufen hatbundle
dieses Problem für mich gelöst.quelle