Ошибка подключения SSL в Ruby 1.9.3-p392+

В Ruby 1.9.3-p385 или более ранней версии я могу успешно запустить следующий фрагмент кода:

require 'uri'
require 'net/http'

uri = URI('https://secure.example.com')

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true if uri.scheme == 'https'

http.start do |h|
  h.request Net::HTTP::Get.new(uri.request_uri)
end

В Ruby 1.9.3-p392 или выше я получаю следующую ошибку:

/Users/jason/.rbenv/versions/1.9.3-p392/lib/ruby/1.9.1/net/http.rb:799:in `connect': Connection reset by peer - SSL_connect (Errno::ECONNRESET)
    from /Users/jason/.rbenv/versions/1.9.3-p392/lib/ruby/1.9.1/net/http.rb:799:in `block in connect'
    from /Users/jason/.rbenv/versions/1.9.3-p392/lib/ruby/1.9.1/timeout.rb:54:in `timeout'
    from /Users/jason/.rbenv/versions/1.9.3-p392/lib/ruby/1.9.1/timeout.rb:99:in `timeout'
    from /Users/jason/.rbenv/versions/1.9.3-p392/lib/ruby/1.9.1/net/http.rb:799:in `connect'
    from /Users/jason/.rbenv/versions/1.9.3-p392/lib/ruby/1.9.1/net/http.rb:755:in `do_start'
    from /Users/jason/.rbenv/versions/1.9.3-p392/lib/ruby/1.9.1/net/http.rb:744:in `start'
    from /Users/jason/.rbenv/versions/1.9.3-p392/lib/ruby/1.9.1/net/http.rb:557:in `start'
  • Я установил обе версии Ruby под последней версией rbenv.
  • Я использую OpenSSL 1.0.1e
  • Я использую OSX 10.8.3 (последняя версия)

Есть ли какая-то существенная разница в том, как обрабатывается SSL между Ruby 1.9.3p-385 и 1.9.3-p392?

По сути, конечной целью является подключение к некоторой конечной точке API с использованием SSL (https://secure.example.com). , не передавая данные о каких-либо SSL-сертификатах со стороны клиента. В идеале я смогу добиться этого, используя Gem для остальных клиентов (это выдает ту же ошибку, что и код выше).


person Jason    schedule 11.04.2013    source источник
comment
Передача «VERIFY_NONE» в качестве режима проверки OpenSSL, похоже, не имеет значения — я все еще получаю эту ошибку   -  person Jason    schedule 08.05.2013
comment
Как вы решили этот вопрос?   -  person Pramod Shinde    schedule 07.03.2016
comment
@PramodShinde Я считаю, что проблема была в установке OpenSSL на моем компьютере. Я попробовал тот же код на новом экземпляре EC2, и мне удалось успешно запустить его. Хотя не уверен на 100% в чем проблема   -  person Jason    schedule 07.03.2016


Ответы (1)


попробуйте установить http.ssl_version = :SSLv3, возможно, ваш API использует другую версию SSL

person Vincent Peres    schedule 14.05.2013
comment
Спасибо за ответ. Я считаю, что проблема была связана с установкой OpenSSL на моем компьютере. Я попробовал тот же код на новом экземпляре EC2, и мне удалось успешно запустить его. Все еще расследуют! - person Jason; 14.05.2013