considere el siguiente código:Cómo conectarse a un servidor HTTPS con un certificado no válido utilizando las últimas versiones de Ruby
require 'net/https'
uri = URI.parse("https://host/index.html")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(uri.path)
response = http.request(request)
donde https://host/index.html
es una dirección válida con un certificado no válido en el servidor.
En versiones anteriores de ruby (específicamente 1.8.7-p334 y 1.9.2-p180) este código funciona bien. En todas las versiones recientes (1.8.7-P352, P290-1.9.2 y 1.9.3-P0) que arroja la siguiente excepción:
OpenSSL::SSL::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=unknown state
en la última línea.
Al cambiar el valor de verify_mode a OpenSSL::SSL::VERIFY_PEER
aparece exactamente el error que sugiere que se está intentando verificar el certificado a pesar de la configuración.
¿Cómo puedo convencer a ruby para que ignore el certificado inválido y se conecte?
Uso de '# start' en lugar de' # post_form' con la propiedad modo de verificar solucionado el problema para mí también. Parece extraño ... Gracias por la sugerencia. –
¿Por qué tienes que usar el método de inicio? – jspooner
Tuve que agregar 'requerir' net/https "', antes solo tenía 'require" net/http "' – botchniaque