Omniauth Errore di Facebook – Faraday :: Errore :: ConnectionFailed

(FYI: Sto seguendo Twitter Omniauth da railscast n. 241. Ho usato Twitter con successo, ora sto andando su Facebook)

Non appena ho effettuato l’accesso a Facebook utilizzando Omniauth, ottengo questo errore:

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

Cosa significa questo?

Questo è il mio codice

 Rails.application.config.middleware.use OmniAuth::Builder do provider :facebook, '', '' end 

In realtà non c’è molto nel mio codice, tutto quello che ho è nel sessionController che voglio usare to_yaml per vedere cosa c’è dentro la request.env

     class SessionsController < ApplicationController def create raise request.env["omniauth.auth"].to_yaml end end 

    Come posso risolvere l’errore di Faraday?

    Si sta verificando questo errore perché Ruby non riesce a trovare un certificato di base affidabile.

    Correzione per Windows: https://gist.github.com/867550

    Correzione per Apple / Linux: http://martinottenwaelter.fr/2010/12/ruby19-and-the-ssl-error/ <- Questo sito non è disponibile.

    Ecco la correzione Apple / Linux secondo il sito qui sopra:

    La soluzione è installare la porta curl-ca-bundle che contiene gli stessi certificati di root usati da Firefox:

     sudo port install curl-ca-bundle 

    e dì al tuo object https di usarlo:

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

    Nota che se vuoi che il tuo codice funzioni su Ubuntu, devi invece impostare l’attributo ca_path, con il percorso dei certificati di default / etc / ssl / certs.

    Alla fine, questo è ciò che funzionerà su Mac OS X e Ubuntu:

     require 'net/https' https = Net::HTTP.new('encrypted.google.com', 443) https.use_ssl = true https.verify_mode = OpenSSL::SSL::VERIFY_PEER https.ca_path = '/etc/ssl/certs' if File.exists?('/etc/ssl/certs') # Ubuntu https.ca_file = '/opt/local/share/curl/curl-ca-bundle.crt' if File.exists('/opt/local/share/curl/curl-ca-bundle.crt') # Mac OS X https.request_get('/') 

    Ho risolto questo problema su Mac OS X Lion 10.7.4 con questa soluzione:

     $ rvm remove 1.9.3 (or whatever version of ruby you are using) $ rvm pkg install openssl $ rvm install 1.9.3 --with-openssl-dir=$rvm_path/usr 

    dopodiché dovrai scaricare il file cacert.pem mancante:

     $ cd $rvm_path/usr/ssl $ sudo curl -O http://curl.haxx.se/ca/cacert.pem $ sudo mv cacert.pem cert.pem 

    La risposta di Andrei non ha funzionato per me su Mac OSX 10.8.3. Ho reinstallato openssl per installare ruby ​​2.0 un po ‘di tempo fa e da allora ho sempre ricevuto questo errore. L’ho risolto grazie alla risposta di Andrei e alle istruzioni del progetto Rails .

    Ho corso:

     $ rvm -v $ rvm get head # Installation of latest version of rvm... $ rvm -v # rvm 1.19.5 (master) $ rvm osx-ssl-certs status all # Certificates for /usr/local/etc/openssl/cert.pem: Old. # Certificates for /Users/mpapis/.sm/pkg/versions/openssl/0.9.8x/ssl/cert.pem: Old. $ sudo rvm osx-ssl-certs update all # Updating certificates... 

    Poi ho controllato se i certificati sono stati aggiornati correttamente eseguendo di nuovo rvm osx-ssl-certs status all , ma /usr/local/etc/openssl/cert.pem stato ancora aggiornato. Non so se fosse necessario, ma ho fatto quanto segue:

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

    Dopo che il problema è stato risolto. Spero che aiuti qualcun altro che si imbatte nello stesso problema.

    questo ha funzionato per me (su Mac OS X):

     $ brew install curl-ca-bundle $ export SSL_CERT_FILE=/usr/local/opt/curl-ca-bundle/share/ca-bundle.crt 

    Soluzione alternativa:

    [Sono un utente di Win7 con installazione manuale di Ruby e Ruby on Rails]

    Ho lo stesso problema ma non posso risolvere dalla risposta fornita da questa domanda. A proposito, finalmente ho risolto il problema seguendo l’url

    URL di reindirizzamento di Facebook in ruby ​​su binari aperto errore ssl https://github.com/technoweenie/faraday/wiki/Setting-up-SSL-certificates

    Il sito Web RVM suggerisce di eseguire l’ rvm osx-ssl-certs update all

    Sito Web RVM: come correggere i certificati danneggiati nel sistema operativo.

    Per Windows 7: il collegamento alla soluzione precedente di Neil Hoff (Fix per Windows: https://gist.github.com/867550 ) non ha funzionato per me.

    Ecco cosa funziona:

    Utilizzando cmd.exe:

     curl -oc:\cacert.pem http://curl.haxx.se/ca/cacert.pem set SSL_CERT_FILE=c:\cacert.pem 

    usando msysgit bash:

     curl -o /c/cacert.pem http://curl.haxx.se/ca/cacert.pem export SSL_CERT_FILE=/c/cacert.pem 

    Se non hai arricciatura sulla riga di comando di Windows 7, scarica qui: http://www.confusedbycode.com/curl/#downloads

    la soluzione originale è da qui – credito a: https://github.com/chef/chef-dk/issues/106

    Dunn.

    La risposta di Andrei ha funzionato per me, tuttavia mi sono imbattuto in un enorme roadblock quando ho provato a reinstallare Ruby 1.9.3. Poiché avevo installato una nuova versione di Xcode dall’installazione di 1.9.3, non sono riuscito a reinstallarlo finché non ho aperto Xcode Preferences e installato gli strumenti della riga di comando dalla scheda Download.

    Scopri la gem certificata . Descrizione:

    Garantire net / https utilizza OpenSSL :: SSL :: VERIFY_PEER per verificare i certificati SSL e fornisce un pacchetto di certificati nel caso in cui OpenSSL non ne trovi uno