Ошибка SSL Ruby - неожиданное сообщение предупреждения sslv3

Я пытаюсь подключиться к серверу 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 0.9.8o 01 июня 2010 г.

На рабочей машине это 0.9.8k 25 марта 2009

Таким образом, более свежий, похоже, ломается.

Кроме того, если я использую другой 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}"

Таким образом, это, похоже, проблема с OpenSSL Ruby привязки.

5
задан marketer 27 July 2011 в 23:23
поделиться