Estoy usando Authlogic-Connect para inicios de sesión de terceros. Después de ejecutar las migraciones apropiadas, los inicios de sesión de Twitter / Google / yahoo parecen funcionar bien, pero el inicio de sesión de Facebook arroja una excepción:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
El registro de desarrollo 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..
Respuestas:
Me encontré con un problema similar al intentar usar el generador JQuery para Rails 3
Lo resolví así:
Obtenga el paquete CURL Certificate Authority (CA). Puedes hacer esto con:
sudo port install curl-ca-bundle
[si está utilizando MacPorts]wget http://curl.haxx.se/ca/cacert.pem
Ejecutar el código de rubí que está tratando de 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 recoge o agregar algo comoENV['SSL_CERT_FILE'] = /path/to/your/new/cacert.pem
en su archivo environment.rb.También se puede simplemente instalar los archivos de CA (no he probado este) para el sistema operativo - hay largas instrucciones aquí - esto debería funcionar de una manera similar, pero no he probado esto personalmente.
Básicamente, el problema que está enfrentando es que algunos servicios web están respondiendo con un certificado firmado contra una CA que OpenSSL no puede verificar.
fuente
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
seguido porexport SSL_CERT_FILE=/usr/local/etc/cacert.pem
SSL_CERT_FILE=/usr/local/etc/openssl/cert.pem
al.env
archivo de mi aplicación y listo, todo feliz.Si está utilizando RVM en OS X, probablemente necesite ejecutar esto:
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 deba reinstalar Ruby desde el origen para solucionar esto. Así es como (reemplace
2.2.3
con su versión Ruby):Crédito a https://stackoverflow.com/a/32363597/4353 e Ian Connor .
fuente
rvm reinstall 2.2.0 --disable-binary
pero luego tienes que agrupar la instalación y comenzar de cero.Así es como puede solucionarlo en Windows: https://gist.github.com/867550 (creado por Fletcher Nichol)
Extracto:
fuente
Ruby no puede encontrar ningún certificado raíz en el que confiar.
Eche un vistazo a esta publicación de blog para encontrar una solución: " Ruby 1.9 y el error SSL ".
fuente
La razón por la que obtiene este error en OSX es el ruby instalado por rvm.
Si se encuentra con este problema en OSX, puede encontrar una explicación realmente amplia en esta publicación de 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:
Si ya tiene la versión en cuestión, puede reinstalarla con:
(obviamente, sustituya su versión ruby según sea necesario).
fuente
\curl -sSL https://get.rvm.io | bash -s stable --autolibs=homebrew
y luegorvm install <ruby-version> --disable-binary
En un momento también lo hice,rvm get head
ya que estos son algunos problemas de vanguardia.SSL_CERT_FILE
. Despuésrvm install 2.2.0 --disable-binary
, el problema se resolvió.El problema es que Ruby no puede encontrar un certificado raíz en el que confiar. A partir de 1.9 ruby comprueba esto. Deberá asegurarse de tener el certificado curl en su sistema en forma de archivo pem. También deberá asegurarse de que el certificado esté en la ubicación que Ruby espera que esté. Puede obtener este certificado en ...
Si es un usuario de RVM y OSX, la ubicación de su archivo de certificado variará según la versión de ruby que esté utilizando. Establecer la ruta explícitamente con: ca_path es una idea MALA ya que su código no será portátil cuando llegue a producción. Allí, para proporcionarle a Ruby un certificado en la ubicación predeterminada (y asumir que sus desarrolladores saben lo que están haciendo). Puede usar dtruss para averiguar dónde está buscando el sistema el archivo del certificado.
En mi caso, el sistema estaba buscando el archivo cert en
sin embargo, el sistema MACOSX esperaría un certificado en
Copié el certificado descargado en esta ruta y funcionó. HTH
fuente
~/.rvm/usr/ssl/cert.pem
cacert.pem
OS X. OS X no lo usacacert.pem
. Los certificados de sistema y usuario se almacenan en KeyChain. Ruby debería integrarse con KeyChain en OS X.La nueva gema certificada está diseñada para solucionar esto:
https://github.com/stevegraham/certified
fuente
bundle
lo agregué explícitamenterequire "certified"
solo para estar seguro, y nada cambia. ¿Qué me estoy perdiendo?cacert.pem
OS X. OS X no lo usacacert.pem
. Los certificados de sistema y usuario se almacenan en KeyChain. Ruby debería integrarse con KeyChain en OS X. OpenSSL nunca ha distribuido acacert.pem
. No está claro para mí por qué cualquier software diferiría a OpenSSL para ello.Simplemente agregue gema 'certificada' en su archivo de gemas y ejecute la instalación del paquete.
fuente
En Mac OS X Lion con el último macport:
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.
fuente
export SSL_CERT_FILE=/usr/local/etc/openssl/cacert.pem
archivo a su archivo .profile o .bashrcUn one liner lo arregla para Windows en una solicitud de administrador
choco install wget
(primero ver chocolatey.org )O simplemente haz esto:
Método de Milanio:
fuente
Bueno, esto funcionó para mí.
Algo está mal con la implementación de openssl de mi ubuntu 12.04
fuente
curl -O http://curl.haxx.se/ca/cacert.pem
,mv cacert.pem cert.pem
,mv cert.pem $rvm_path/usr/ssl
Si bien sé que es una solución 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 (incluido yo) apreciarían un enfoque simple e intuitivo.
Eso indica dónde está buscando su openssl el archivo cert. Mi nombre no es Luis, pero el mío sí
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, enopenknapsack
lugar deluislavena
).La ruta no cambió incluso después a
set SSL_CERT_FILE=C:\foo\bar\baz\cert.pem
través de la consola, así que ... Creé el directorioC:\Users\Luis\Code\luislavena\knap-build\var\knapsack\software\x86-windows\openssl\1.0.0l\ssl
en mi disco local y puse un archivo cert en él.Cojo como es, esto seguramente funcionará.
fuente
Intenté instalar
curl-ca-bundle
conbrew
, pero el paquete ya no está disponible:La solución que me funcionó en Mac fue:
Agregue esta línea en su
~/.bash_profile
(o~/.zshrc
para zsh):Luego actualice su terminal:
fuente
export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem
~/.bash_profile
, deja un recordatorio de lo que se agregó (y, de manera crucial, dónde) cuando se requieren actualizaciones adicionales.Aquí hay otra opción para fines de depuración.
Asegúrese de nunca usar esto en ningún entorno de producción, ya que negará los beneficios de usar SSL en primer lugar. Solo es válido hacerlo en su entorno de desarrollo local.
fuente
Tuve este mismo problema mientras trabajaba en un proyecto Ruby. Estoy usando Windows 7 de 64 bits.
Resolví esto por:
fuente: https://gist.github.com/fnichol/867550
fuente
La respuesta más directa que funcionó para mí fue esta
¡¡¡Y voilá!!!
fuente
OS X 10.8.x con Homebrew:
fuente
Entonces, como sugiere esta publicación de blog,
" Cómo curar Net :: Comportamiento HTTPS predeterminado de riesgo de HTTP "
es posible que desee instalar la
always_verify_ssl_certificates
gema que le permita establecer un valor predeterminado paraca_file
.fuente
Esto funcionó para mí. Si usa rvm y brew:
fuente
Me encontré con este problema y la solución sugerida de
rvm osx-ssl-certs update all
no funcionó a pesar de que soy un usuario de RVM en OSX.La solución que funcionó para mí fue reinstalar la última versión de openssl:
fuente
Solucioné este problema ejecutando esto en la terminal. El informe completo está disponible aquí.
fuente
Solución OSX:
instalar la última versión estable de rvm
use el comando rvm para resolver los certificados automáticamente
fuente
Si está ejecutando su aplicación de rieles localmente, simplemente agregue esta línea en la parte inferior de application.rb.
Después de esto, puede usar la aplicación sin ningún problema. Puede llamarlo pirateo, pero no se recomienda. Úselo solo cuando necesite ejecutarlo localmente
fuente
Esto es lo que hice que ayudó si específicamente tienes un problema con Leopard.
Mi certificado era antiguo y necesitaba ser actualizado. Descargué esto:
http://curl.haxx.se/ca/cacert.pem
Luego reemplacé mi certificado que se encontró aquí en Leopard:
¡Vuelva a cargar lo que tenga que esté accediendo y debería estar listo para comenzar!
fuente
Solo porque las instrucciones fueron un poco diferentes para lo que funcionó para mí, pensé agregar mis 2 centavos:
Estoy en OS X Lion y uso macports y rvm
Instalé curl-ca-bundle:
Luego ajusté mi configuración omniauth para que sea esto:
fuente
ca-bundle.crt
) y usar Google Internet Authority G2 en:ssl => {:ca_path => "/share/curl/curl-ca-bundle.crt"}
. Ese es el único necesario para certificar las conexiones a Google.Si tiene un enlace simbólico en / usr / local / etc / openssl que apunta a cert.pem, intente hacer esto:
fuente
Lo que funcionó para mí es una combinación de respuestas, a saber:
fuente
Tuve problemas durante varios días y estaba hackeando. Este enlace resultó ser extremadamente útil para mí. Me ayudó a hacer una actualización exitosa de SSL en MAC OS X 9.
fuente
En ocasiones, no siempre es el problema de rvm en MAC OSX, si elimina .rvm, el problema persiste (especialmente mientras realiza una copia de seguridad de los datos de timemachine), puede intentarlo de esta manera.
fuente
Agregar
gem 'certified', '~> 1.0'
a miGemfile
y ejecutarbundle
resolvió este problema para mí.fuente