Ruby SSL错误 – sslv3警告意外消息
发布时间:2020-12-16 21:05:01 所属栏目:百科 来源:网络整理
导读:我正在尝试使用 ruby脚本连接到服务器https://www.xpiron.com/schedule.但是,当我尝试连接时: require 'open-uri'doc = open('https://www.xpiron.com/schedule') 我收到以下错误消息: OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv
我正在尝试使用
ruby脚本连接到服务器https://www.xpiron.com/schedule.但是,当我尝试连接时:
require 'open-uri' doc = open('https://www.xpiron.com/schedule') 我收到以下错误消息: OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: sslv3 alert unexpected message from /usr/local/lib/ruby/1.9.1/net/http.rb:678:in `connect' from /usr/local/lib/ruby/1.9.1/net/http.rb:678:in `block in connect' from /usr/local/lib/ruby/1.9.1/timeout.rb:44:in `timeout' from /usr/local/lib/ruby/1.9.1/timeout.rb:87:in `timeout' from /usr/local/lib/ruby/1.9.1/net/http.rb:678:in `connect' from /usr/local/lib/ruby/1.9.1/net/http.rb:637:in `do_start' from /usr/local/lib/ruby/1.9.1/net/http.rb:626:in `start' from /usr/local/lib/ruby/1.9.1/net/http.rb:1168:in `request' from /usr/local/lib/ruby/1.9.1/net/http.rb:888:in `get' from (irb):32 from /usr/local/bin/irb:12:in `<main>' 我正在运行Ruby 1.9.2p180.它似乎适用于其他一些机器,因此它可能是OpenSSL或Ruby的配置问题.我尝试重新安装所有SSL库,并从头开始重建Ruby,但似乎没有任何工作.有谁遇到过这个问题? 更新 在非工作机器上,openssl版本是2010年6月1日的0.9.8o 在工作机器上,它是2009年3月25日的0.9.8k 所以最近的一个似乎正在打破. 此外,如果我使用不同的HTTP客户端(Patron,基于libcurl),它可以工作: require 'patron' sess = Patron::Session.new sess.timeout = 5 url = 'https://www.xpiron.com/schedule' resp = sess.get(url) puts "#{resp.body}" 所以这似乎是Ruby的OpenSSL绑定的一个问题. 解决方法
只是回答我自己的问题.
问题似乎在于Ruby如何协商SSL连接. Xpiron的TLS机制中存在错误,它会抛出错误而不是重试其他SSL版本. 如果强制SSL版本为3.0,则可以: require 'net/http' url = URI.parse('https://www.xpiron.com/schedule') req = Net::HTTP::Get.new(url.path) sock = Net::HTTP.new(url.host,443) sock.use_ssl = true sock.ssl_version="SSLv3" sock.start do |http| response = http.request(req) end 我还在Ruby的bug tracker上创建了一个问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |