我正在尝试使用远程系统进行用户身份验证。当我在MacOSX上运行时,这段代码会得到响应,但在我的机器上失败了:
def create
uri = URI.parse('https://ourclient.example.com/')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new('/login.jsp')
request.set_form_data({'login_name' => params[:login], 'password' => params[:password]})
response = http.request(request)
puts "Response BODY: #{response.body.inspect}"
end
关闭转动验证功能可以消除Mac上的警告。在我的机器上,http.request引发了这个异常:
OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: sslv3 alert illegal parameter):
app/controllers/sessions_controller.rb:16:in `create'
我在没有Rails的情况下使用IRB获得相同的行为。昨天我做了一个干净的Fedora 14安装,安装了所需的开发工具和库。我使用的是Ruby 1.9.2-p180和Rails 3.0.4。我以为我可能错误配置了我的库(我已经升级了几次Fedora 12),但现在这是一个新安装。
远程系统可能是微软的IIS,但我不确定。也许我可以使用较旧的SSL协议,但我的Google-fu无法找到咒语。
我很感激有关解决此问题的任何提示。谢谢,
克里斯
答案 0 :(得分:0)
如何在服务器上创建ssl证书?自签名还是签名? 如果删除VERIFY_NONE,则会收到错误?
答案 1 :(得分:0)
使用Mechanize gem
gem install mechanize
并尝试
require 'mechanize'
page = Mechanize.new{|a| a.ssl_version, a.verify_mode = 'SSLv3', OpenSSL::SSL::VERIFY_NONE}.get "**YOUR HTTPS LINK HERE**"