Error de Facebook de Omniauth-Faraday:: Error:: ConnectionFailed
faraday-oauth (9)
(Para su información: estoy siguiendo el Twitter Omniauth de Railscast # 241. Utilicé Twitter exitosamente, ahora voy a Facebook)
Tan pronto como inicié sesión en Facebook usando Omniauth, recibo este error:
Faraday::Error::ConnectionFailed
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
¿Qué significa esto?
Este es mi código
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, ''<key from fb>'', ''<another key from fb>''
end
En realidad, no hay mucho en mi código, todo lo que tengo está en el controlador de sesión que quiero usar en to_yaml para ver qué hay dentro de la solicitud.env
class SessionsController < ApplicationController
def create
raise request.env["omniauth.auth"].to_yaml
end
end
¿Cómo resuelvo el error de Faraday?
Echa un vistazo a la gema certified Descripción:
Asegúrese de que net / https usa OpenSSL :: SSL :: VERIFY_PEER para verificar certificados SSL y proporciona paquetes de certificados en caso de que OpenSSL no pueda encontrar uno
El sitio web RVM sugiere ejecutar rvm osx-ssl-certs update all
Sitio web de RVM: cómo reparar certificados rotos en su sistema operativo.
He solucionado esto en Mac OS X Lion 10.7.4 con esta solución:
$ 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
después de esto, deberá descargar el archivo cacert.pem que falta:
$ cd $rvm_path/usr/ssl
$ sudo curl -O http://curl.haxx.se/ca/cacert.pem
$ sudo mv cacert.pem cert.pem
La respuesta de Andrei funcionó para mí, sin embargo, me encontré con un gran obstáculo al intentar reinstalar Ruby 1.9.3. Como había instalado una nueva versión de Xcode desde la instalación de 1.9.3, no pude volver a instalarla hasta que abrí las Preferencias de Xcode e instalé las Herramientas de línea de comandos en la pestaña Descargas.
La respuesta de Andrei no funcionó para mí en Mac OSX 10.8.3. He reinstalado openssl para instalar Ruby 2.0 hace un tiempo y desde entonces siempre recibí este error. Lo arreglé gracias a la respuesta e railsapps.github.io/openssl-certificate-verify-failed.html Andrei del railsapps.github.io/openssl-certificate-verify-failed.html .
Corrí:
$ 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...
Luego verifiqué si los certificados se actualizaron correctamente ejecutando el estado de rvm osx-ssl-certs status all
nuevamente, pero /usr/local/etc/openssl/cert.pem
todavía no se actualizó. No sé si fue necesario, pero hice lo siguiente:
$ cd /usr/local/etc/openssl/
$ curl -O http://curl.haxx.se/ca/cacert.pem
$ mv cacert.pem cert.pem
Después de eso, el problema se solucionó. Espero que ayude a alguien más que se encuentra con el mismo problema.
Obtiene este error porque Ruby no puede encontrar un certificado raíz en el que confiar.
Corrección para Windows: https://gist.github.com/867550
Solución para Apple / Linux: http://martinottenwaelter.fr/2010/12/ruby19-and-the-ssl-error/ <- Este sitio ya no funciona.
Aquí está la solución de Apple / Linux según el sitio de arriba:
La solución es instalar el puerto curl-ca-bundle que contiene los mismos certificados raíz utilizados por Firefox:
sudo port install curl-ca-bundle
y dile a tu objeto https que lo use:
https.ca_file = ''/opt/local/share/curl/curl-ca-bundle.crt''
Tenga en cuenta que si desea que su código se ejecute en Ubuntu, debe establecer el atributo ca_path en su lugar, con la ubicación de certificados predeterminada / etc / ssl / certs.
Al final, eso es lo que funcionará tanto en Mac OS X como en 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(''/'')
Para Windows 7: el enlace de la solución anterior de Neil Hoff (Fix para Windows: https://gist.github.com/867550 ) no funcionó para mí.
Esto es lo que funciona:
Usando cmd.exe:
curl -o c:/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
Si no tiene curl en su línea de comandos de Windows 7, hágalo aquí: http://www.confusedbycode.com/curl/#downloads
la solución original es de aquí - crédito a: https://github.com/chef/chef-dk/issues/106
Dunn.
esto funcionó para mí (en Mac OS X):
$ brew install curl-ca-bundle
$ export SSL_CERT_FILE=/usr/local/opt/curl-ca-bundle/share/ca-bundle.crt
Solución alternativa:
[Soy un usuario de Win7 con la instalación manual de Ruby and Ruby on Rails]
Tengo el mismo problema pero no puedo resolverlo con la respuesta dada por esta pregunta. Por cierto, finalmente, tengo un problema resuelto siguiendo la URL
URL de redirección de Facebook en ruby on rails open ssl error https://github.com/technoweenie/faraday/wiki/Setting-up-SSL-certificates