ruby-on-rails ssl

ruby on rails - ¿Cómo resolver "verificación de certificado fallida" en Windows?



ruby-on-rails ssl (15)

Estoy intentando usar el sello para OAuth en los servicios de Google. Y consigue este error:

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

Siguiendo estas preguntas:

Parece que la solución es corregir ca_path o establecer VERIFY_NONE para SSL .

El arreglo ca_path publicado solo funciona en Linux (instalación del puerto) y la solución para VERIFY_NONE parece ser para faraday.

¿Hay una solución para Windows / signet joya?


Añadiendo a la solución de DevDude, pero usando Windows Powershell:

Descargue http://curl.haxx.se/ca/cacert.pem en c: / railsinstaller / cacert.pem

En el prompt de powershell:

$env:SSL_CERT_FILE = ''c:/RailsInstaller/cacert.pem''

Pude ejecutar la gem update éxito

Nota: simplemente puede definir esa variable de entorno en su perfil notepad $profile



De hecho, la mejor manera que encontré para resolver esto en Windows para Ruby, no solo una joya, es hacer lo siguiente:

  1. Descargue https://curl.haxx.se/ca/cacert.pem en c: / railsinstaller / cacert.pem. Asegúrese de guardarlo como un archivo .pem, en lugar de como un archivo de texto.
  2. Vaya a su computadora -> Configuración avanzada -> Variables de entorno
  3. Crea una nueva variable de sistema:

    Variable: SSL_CERT_FILE Valor: C: / RailsInstaller / cacert.pem

  4. Cierre todas las solicitudes de comando, incluido el símbolo del sistema del servidor de Rails, etc.

  5. Inicie un nuevo indicador Ruby IRB y pruebe lo siguiente:

    $irb>require ''open-uri'' $irb>open(''https://www.gmail.com'')

Todo debería funcionar ahora bien.


Después de demasiada búsqueda y tiempo perdido, encontré una solución muy simple para solucionar este problema en Ruby con Windows.

Dos pasos simples:

  1. En el símbolo del sistema escriba: C:/gem install certified

  2. En su archivo rb , agregue: require ''certified''

Eso es.


Esto me ayudó: https://coderwall.com/p/ubl6iw/fix-ssl_connect-returned-1-errno-0-state-sslv3-read-server-certificate-b-certificate-verify-failed-openssl-ssl-sslerror Mi proyecto ruby ​​on rails está publicando datos en una API internamente, y no puede verificar el certificado interno. Estas líneas ayudaron:

require ''https'' http = Net::HTTP.new(''example.com'', 443) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.cert_store = OpenSSL::X509::Store.new http.cert_store.set_default_paths http.cert_store.add_file(''/path/to/internal.cert.pem'')

Espero que esto pueda ayudar.


La actualización del marco de administración del paquete rubygems resolvió este problema para mí en Windows 7.

https://rubygems.org/pages/download

gem update --system # may need to be administrator or root


Para las personas que usan rieles 4.

Añadir esto en devise.rb

require "omniauth-google-oauth2" config.omniauth :google_oauth2, "CLIENT_ID", "CLIENT_SECRET", { access_type: "offline", approval_prompt: "", :client_options => {:ssl => {:verify => false}} }


Pude eliminar la configuración PATH o SYSTEM VARIABLE mencionada anteriormente al importar el certificado como una Autoridad de confianza.

  1. Invocar certmgr.msc
  2. Haga clic con el botón derecho en la carpeta Autoridad de certificación de confianza.
  3. Seleccione "Todas las tareas"
  4. Seleccione "Importar"
  5. Seleccione Todos los archivos en el menú desplegable de tipo de archivo y seleccione el archivo cacert.pem.
  6. Debería recibir un mensaje "Importar con éxito"

Solución para Windows, que improvisé a partir de algunas respuestas diferentes:

  1. Descargue https://curl.haxx.se/ca/cacert.pem y colóquelo en YOUR_APP / lib / assets (o donde sea)
  2. En config / initializers / omniauth.rb :

    #config/initializers/omniauth.rb Rails.application.config.middleware.use OmniAuth::Builder do provider :facebook, CUSTOMER_KEY, CUSTOMER_SECRET, {client_options: {ssl: {ca_file: Rails.root.join(''lib/assets/cacert.pem'').to_s}}} end

  3. Obviamente, reinicia tu servidor.

Notas al pie: es posible que pueda cortar una gran cantidad de certificados innecesarios en el archivo cacert.pem para reducir el tamaño. Si solo necesita esta solución para el desarrollo, puede guardar el archivo fuera de su proyecto y hacer un if Rails.env.development? _línea de proveedor con las opciones del cliente hash_ else _provider line without client_options hash_ end


También me enfrentaba a este problema cuando instalé versiones de rubíes más antiguas. Cuando instalé la última versión de Ruby, este problema desapareció. Entonces, básicamente, el certificado SSL necesitaba ser actualizado.


Tuve este error al intentar instalar los rieles 5 en una máquina de Windows, resulta que tuve que actualizar la versión de rubygem a 2.6.7 y luego funcionó.

paso 1 descargar rubygem desde abajo

https://rubygems.org/downloads/rubygems-update-2.6.7.gem

paso 2: instálalo apuntando a los rubygems descargados

gem install --local C:/rubygems-update-2.6.7.gem

paso 3: verificar la nueva versión es 2.6.7

gem --version

paso 4 - ahora desinstala con seguridad la gema rubygems-update

gem uninstall rubygems-update -x

el paso 5 intentó instalar los rieles 5 de nuevo

gem install rails --version 5.0.0

¡trabajado como un encanto!

Obtuve información de: http://guides.rubygems.org/ssl-certificate-update/#installing-using-update-packages


Usar la URL http: // en lugar de https: // hacer esto más fácil para usted

Cambia la fuente de la gema a http://rubygems.org/ usando la siguiente línea de comando en tu línea de comando de ruby

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


Vaya a la página de descarga de actualización de rubygems: https://rubygems.org/gems/rubygems-update

Haga clic en el enlace Descargar y descargará un archivo llamado rubygems-update-2.6.7.gem. En la línea de comandos, navegue hasta el directorio donde descargó el archivo .gem y escriba:

gem install rubygems-update-2.6.7.gem

(o cualquiera que sea el nombre del archivo, si es una versión más nueva)

Luego escribe:

update_rubygems

Puede verificar que esté actualizado con:

gem --version


guarde su archivo cacert.pmp desde https://curl.haxx.se/ca/cacert.pem y luego agregue este archivo a la ubicación de la carpeta de instalación de su directorio / lib / ruby ​​/ 2.3.0 / rubygems / ssl_certs

por ejemplo: C: / Ruby23 / lib / ruby ​​/ 2.3.0 / rubygems / ssl_certs


sí, configuré el archivo omniouth.rb en la carpeta de inicializadores para esto:

provider :facebook, FACEBOOK_KEY, FACEBOOK_SECRET, {:client_options => {:ssl => {:verify => false}}}

y esto parece funcionar bien ahora. Pero no use esto para la producción .