考虑下面的代码使用无效证书连接到HTTPS服务器:如何使用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)
其中https://host/index.html
是在服务器上的无效证书的有效地址。
在旧版本的红宝石(特别是1.8.7-P334和1.9.2-P180)这种代码工作正常。在所有最新版本(1.8.7-P352,1.9.2-P290和1.9.3-P0)它抛出以下异常:
OpenSSL::SSL::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=unknown state
在最后一行。
更改verify_mode到OpenSSL::SSL::VERIFY_PEER
给出完全错误表明它正试图验证证书,尽管设置的。
我怎样才能说服红宝石忽略无效的证书和连接?
使用',而不是有固定的问题对我来说太验证模式属性'#post_form'#start'。似乎很奇怪......感谢您的建议。 –
为什么你必须使用start方法? – jspooner
我不得不添加'要求 “净/ HTTPS”',只有'之前需要 “网/ HTTP”' – botchniaque