ruby-on-rails ruby ssl authlogic facebook-graph-api

ruby on rails - SSL_connect devuelto=1 errno=0 estado=SSLv3 certificado de servidor de lectura B: la verificación del certificado falló



ruby-on-rails authlogic (30)

Estoy utilizando Authlogic-Connect para inicios de sesión de terceros. Después de ejecutar las migraciones adecuadas, los inicios de sesión de Twitter / Google / yahoo parecen funcionar bien, pero el inicio de sesión en Facebook produce una excepción:

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

El registro de dev muestra

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''

Por favor recomiende..


A one liner lo arregla para Windows en un mensaje de Admin.

choco install wget (primero ver chocolatey.org )

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

O simplemente haz esto:

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

El método de Milanio:

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]


Agregar gem ''certified'', ''~> 1.0'' a mi Gemfile y ejecutar el bundle solucionó este problema para mí.


Aquí hay otra opción para propósitos de depuración.

Asegúrese de no utilizar nunca esto en ningún entorno de producción, ya que negará los beneficios de usar SSL en primer lugar. Solo es válido hacer esto en su entorno de desarrollo local.

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


Aquí le mostramos cómo puede solucionarlo en Windows: https://gist.github.com/867550 (creado por Fletcher Nichol)

Extracto:

El camino manual (aburrido)

Descargue el archivo cacert.pem desde http://curl.haxx.se/ca/cacert.pem . Guarde este archivo en C:/RailsInstaller/cacert.pem .

Ahora haga que ruby ​​conozca su paquete de autoridad de certificados configurando SSL_CERT_FILE . Para establecer esto en su sesión actual del símbolo del sistema, escriba:

set SSL_CERT_FILE=C:/RailsInstaller/cacert.pem

Para que esto sea una configuración permanente, agregue esto en su panel de control .


Aunque sé que es una solución bastante poco convincente, sigo compartiendo esto porque parece que muy pocas personas que responden aquí usan Windows , y creo que algunos de los usuarios de Windows (yo incluido) apreciarían un enfoque simple e intuitivo.

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

Eso indica dónde está su openssl buscando el archivo cert. Mi nombre no es Luis, pero el mío era C:/Users/Luis/Code/luislavena/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0l/ssl/cert.pem . La ruta puede ser diferente dependiendo de cada entorno propio (por ejemplo, openknapsack lugar de luislavena ).

La ruta no cambió incluso después de set SSL_CERT_FILE=C:/foo/bar/baz/cert.pem través de la consola, así que ... set SSL_CERT_FILE=C:/foo/bar/baz/cert.pem el directorio C:/Users/Luis/Code/luislavena/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0l/ssl en mi disco local y coloque un archivo cert en él.

Lame como es, esto seguramente funcionará.


Bueno esto funciono para mi

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

Algo está mal con la implementación openssl de mi ubuntu 12.04


El problema es que Ruby no puede encontrar un certificado raíz en el que confiar. A partir del 1.9 rubí comprueba esto. Deberá asegurarse de que tiene el certificado curl en su sistema en forma de un archivo pem. También deberá asegurarse de que el certificado se encuentre en la ubicación en la que Ruby espera que se encuentre. Puede obtener este certificado en ...

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

Si usted es un usuario de RVM y OSX, la ubicación de su archivo de certificado variará según la versión de ruby ​​que utilice. Establecer la ruta explícitamente con: ca_path es una mala idea ya que su código no será portátil cuando llegue a producción. Ahí quiere que le proporcione a ruby ​​un certificado en la ubicación predeterminada (y suponga que sus desarrolladores saben lo que están haciendo). Puede usar dtruss para averiguar dónde está buscando el archivo de certificado el sistema.

En mi caso el sistema buscaba el archivo cert en

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

Sin embargo, el sistema MACOSX esperaría un certificado en

/System/Library/OpenSSL/cert.pem

Copié el certificado descargado a esta ruta y funcionó. HTH


En Mac OS X Lion con el último macport:

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

Luego, vuelva a ejecutar el trabajo fallido.

Tenga en cuenta que la ubicación del archivo cert parece haber cambiado desde que Eric G respondió el 12 de mayo.



Esto es lo que hice que ayudó si tiene un problema específico con Leopard.

Mi certificado era viejo y necesitaba ser actualizado. Descargué esto:

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

Luego reemplazé mi certificado que se encontró aquí en Leopard:

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

¡Recarga lo que tengas que esté accediendo y deberías estar listo!


Esto funcionó para mí. Si estás usando rvm y brew:

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


He intentado instalar curl-ca-bundle con brew , pero el paquete ya no está disponible:

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

La solución que me funcionó en Mac fue:

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

Agregue esta línea en su ~/.bash_profile (o ~/.zshrc para zsh):

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

Luego actualiza tu terminal:

$ source ~/.bash_profile



La razón por la que obtienes este error en OSX es el ruby ​​instalado por rvm.

Si se encuentra con este problema en OSX, puede encontrar una explicación muy amplia al respecto en esta publicación del blog:

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

La versión corta es que, para algunas versiones de Ruby, RVM descarga binarios precompilados, que buscan certificados en la ubicación incorrecta. Al obligar a RVM a descargar la fuente y compilar en su propia máquina, se asegura de que la configuración de la ubicación del certificado sea correcta.

El comando para hacer esto es:

rvm install 2.2.0 --disable-binary

Si ya tiene la versión en cuestión, puede volver a instalarla con:

rvm reinstall 2.2.0 --disable-binary

(Obviamente, sustituye tu versión rubí según sea necesario).


La respuesta más directa que me funcionó fue la siguiente.

sudo apt-get install openssl ca-certificates

¡¡¡Y voilá!!!


Me encontré con este problema y la corrección sugerida de la rvm osx-ssl-certs update all de rvm osx-ssl-certs update all no funcionó a pesar de que soy un usuario RVM en OSX.

La solución que funcionó para mí fue volver a instalar la última versión de openssl:

brew update brew remove openssl brew install openssl


Me encontré con un problema similar al intentar usar el generador JQuery para Rails 3

Lo resolví así:

  1. Obtenga el paquete de la Autoridad de Certificación (CA) CURL. Puedes hacer esto con:

    • sudo port install curl-ca-bundle [si está usando MacPorts]
    • o simplemente wget http://curl.haxx.se/ca/cacert.pem directamente wget http://curl.haxx.se/ca/cacert.pem
  2. Ejecute el código Ruby que intenta verificar la certificación SSL: SSL_CERT_FILE=/opt/local/etc/certs/cacert.pem rails generate jquery:install . En su caso, desea establecer esto como una variable de entorno en algún lugar donde el servidor lo recoja o agregar algo como ENV[''SSL_CERT_FILE''] = /path/to/your/new/cacert.pem en su archivo environment.rb.

También puede instalar los archivos de CA (no he probado esto) en el sistema operativo. here hay instrucciones extensas. Esto debería funcionar de manera similar, pero no lo he intentado personalmente.

Básicamente, el problema que está afectando es que algún servicio web está respondiendo con un certificado firmado contra una CA que OpenSSL no puede verificar.


OS X 10.8.x con 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


Ruby no puede encontrar ningún certificado raíz en el que confiar.

Eche un vistazo a esta publicación del blog para encontrar una solución: " Ruby 1.9 y el error SSL ".

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, necesita establecer el atributo ca_path lugar, con la ubicación predeterminada de los certificados /etc/ssl/certs .


Si está ejecutando su aplicación Rails localmente, simplemente agregue esta línea en la parte inferior de application.rb.

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

Después de esto puedes usar la aplicación sin ningún problema. Puedes llamarlo hack pero no es recomendable. Úsalo solo cuando necesites correr localmente


Si está utilizando RVM en OS X, probablemente necesite ejecutar esto:

rvm osx-ssl-certs update all

Más información aquí: http://rvm.io/support/fixing-broken-ssl-certificates

Y aquí está la explicación completa: https://github.com/wayneeseguin/rvm/blob/master/help/osx-ssl-certs.md

Actualizar

En Ruby 2.2, es posible que tengas que reinstalar Ruby desde la fuente para solucionar este problema. Aquí es cómo (reemplace 2.2.3 con su versión de Ruby):

rvm reinstall 2.2.3 --disable-binary

Crédito a https://.com/a/32363597/4353 y Ian Connor .


Si tiene un enlace simbólico en / usr / local / etc / openssl que apunta a cert.pem, intente hacer esto:

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)


Simplemente ejecute el ejecutable de certified-update y este comando se asegurará de que todos sus certificados estén actualizados.

Esto funcionó para mi aplicación Ruby on Rails en Windows.


Solo agregue gema ''certificada'' en su gemfile y ejecute el paquete de instalación.

  1. gema '' certificado ''
  2. paquete de instalación

Solo porque las instrucciones fueron un poco diferentes para lo que me funcionó, pensé que agregué mis 2 centavos:

Estoy en OS X Lion y usando macports y rvm

Instalé curl-ca-bundle:

sudo port install curl-ca-bundle

Luego ajusté mi configuración de omniauth para ser esto:

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


Solución OSX:

instalar la última versión estable de rvm

rvm get stable

Utilice el comando rvm para resolver los certificados automáticamente

rvm osx-ssl-certs update all



Tuve este mismo problema mientras trabajaba en un proyecto de Ruby. Estoy usando Windows 7 64bit.

Resolví esto por:

  1. Descargando el archivo cacert.pem desde http://curl.haxx.se/ca/cacert.pem .
  2. Guardé ese archivo en C: /RubyCertificates/cacert.pem
  3. Luego, configure mi variable de entorno "SSL_CERT_FILE" en "C: / RubyCertificates / cacert.pem"

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



Tuve que reinstalar Ruby. Esto debería resolverlo si estás usando Ubuntu y rbenv:

rbenv uninstall your_version # install dependencies sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev # install ruby with patch curl -fsSL https://gist.github.com/mislav/055441129184a1512bb5.txt | / rbenv install --patch your_version

Para más información, echa un vistazo a la Wiki rbenv sobre el tema.