una servidor seguro segura responde puedo puede pudo porque paginas pagina modo mac funciona establecer conexion comandos arranque arranca algunas abrir abre ruby mechanize

ruby - servidor - ¿Por qué falla el acceso a un sitio SSL con Mechanize en Windows, pero en Mac funciona?



safari no pudo abrir la pagina porque el servidor no responde iphone (2)

Este es el código que estoy usando para conectarme al sitio SSL.

require ''mechanize'' a = Mechanize.new page = a.get ''https://site.com''

Utilizo las dependencias de Ruby 1.9.3 y Mechanize 2.1pre1 +. En Mac, el código anterior funciona y devuelve la página. En Windows 7 con las mismas versiones, aparece el siguiente error:

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

Revertir a Mechanize 2.0.1 parece resolver este problema, pero luego me atormento con el too many connections reset by peer problema too many connections reset by peer . Así que eso no es una solución.

He intentado hacer a.verify_mode = false , pero eso no hace nada. He leído que puedes desactivar la verificación SSL usando:

open(uri,:ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE)

¿Cómo puedo apagarlo en mecanizar? ¿Por qué solo recibo este error en Windows?


La respuesta de Luis se ve bien, pero en general:

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


La versión de OpenSSL (la biblioteca utilizada para establecer conexiones seguras con Net::HTTPS ) no puede encontrar correctamente la cadena de certificados en su computadora.

Para nuestro mal, OpenSSL nunca pudo usar el almacenamiento de certificados instalado de Windows para validar servidores remotos, por lo que está fallando.

De tu ejemplo, puedes hacer:

a.agent.http.verify_mode = OpenSSL::SSL::VERIFY_NONE

Para evitar la verificación, sin embargo, eso dista mucho de ser ideal (debido a problemas de seguridad claros)

Te recomiendo que descargues algunos paquetes de certificados (como los de Curl):

http://curl.haxx.se/ca

Y modifique su código a algo como esto:

require "rbconfig" require "mechanize" a = Mechanize.new # conditionally set certificate under Windows # http://blog.emptyway.com/2009/11/03/proper-way-to-detect-windows-platform-in-ruby/ if RbConfig::CONFIG["host_os"] =~ /mingw|mswin/ # http://curl.haxx.se/ca ca_path = File.expand_path "~/Tools/bin/curl-ca-bundle.crt" a.agent.http.ca_file = ca_path end page = a.get "https://github.com/"

Eso parece funcionar, Ruby 1.9.3-p0 (i386-mingw32), Windows 7 x64 y mecanize 2.1.pre.1

Espero que ayude.