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:
- SSL_connect returned = 1 errno = 0 state = SSLv3 read server certificate B: certificate verify failed
- OmniAuth y Facebook: verificación de certificado fallida
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
Creo que la respuesta correcta es actualizar tu instalador de gemas: https://rubygems.org/gems/rubygems-update . La explicación de por qué esto es necesario se encuentra en: Actualizaciones de certificados Ssl
De hecho, la mejor manera que encontré para resolver esto en Windows para Ruby, no solo una joya, es hacer lo siguiente:
- 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.
- Vaya a su computadora -> Configuración avanzada -> Variables de entorno
Crea una nueva variable de sistema:
Variable: SSL_CERT_FILE Valor: C: / RailsInstaller / cacert.pem
Cierre todas las solicitudes de comando, incluido el símbolo del sistema del servidor de Rails, etc.
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:
En el símbolo del sistema escriba:
C:/gem install certified
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.
- Invocar certmgr.msc
- Haga clic con el botón derecho en la carpeta Autoridad de certificación de confianza.
- Seleccione "Todas las tareas"
- Seleccione "Importar"
- Seleccione Todos los archivos en el menú desplegable de tipo de archivo y seleccione el archivo cacert.pem.
- Debería recibir un mensaje "Importar con éxito"
Solución para Windows, que improvisé a partir de algunas respuestas diferentes:
- Descargue https://curl.haxx.se/ca/cacert.pem y colóquelo en YOUR_APP / lib / assets (o donde sea)
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
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 .