Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTTP GET request using Ruby on Rails: OpenSSL::SSL::SSLError

I am getting the following error

OpenSSL::SSL::SSLError in ProfilesController#httpwork
SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read server hello A

Here is my code in profiles_controller.rb

def httpwork
    require "net/http"
    require "uri"
    require "openssl"

    http = Net::HTTP.new("00.000.00.000", 0000)
    http.use_ssl = true
    http.ssl_version = :SSLv3
    http.verify_mode = OpenSSL::SSL::VERIFY_PEER
    request = Net::HTTP::Get.new("profileTest")

    response = http.request(request)
end

quick note that host/port numbers are hidden, but the formatting is like that (not like "stackoverflow.com/question")

in httpwork.html.erb

<h1>Profiles#httpwork</h1>
<%= @response.body %>

Here is full stacktrace

C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:918:in connect' C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:918:inblock in connect' C:/Ruby200-x64/lib/ruby/2.0.0/timeout.rb:52:in timeout' C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:918:inconnect' C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:862:in do_start' C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:851:instart' C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:1367:in request' app/controllers/profiles_controller.rb:20:inhttpwork' actionpack (4.1.2) lib/action_controller/metal/implicit_render.rb:4:in send_action' actionpack (4.1.2) lib/abstract_controller/base.rb:189:inprocess_action' actionpack (4.1.2) lib/action_controller/metal/rendering.rb:10:in process_action' actionpack (4.1.2) lib/abstract_controller/callbacks.rb:20:inblock in process_action' activesupport (4.1.2) lib/active_support/callbacks.rb:113:in call' activesupport (4.1.2) lib/active_support/callbacks.rb:113:incall' activesupport (4.1.2) lib/active_support/callbacks.rb:229:in block in halting' activesupport (4.1.2) lib/active_support/callbacks.rb:229:incall' activesupport (4.1.2) lib/active_support/callbacks.rb:229:in block in halting' activesupport (4.1.2) lib/active_support/callbacks.rb:166:incall' activesupport (4.1.2) lib/active_support/callbacks.rb:166:in block in halting' activesupport (4.1.2) lib/active_support/callbacks.rb:166:incall' activesupport (4.1.2) lib/active_support/callbacks.rb:166:in block in halting' activesupport (4.1.2) lib/active_support/callbacks.rb:166:incall' activesupport (4.1.2) lib/active_support/callbacks.rb:166:in block in halting' activesupport (4.1.2) lib/active_support/callbacks.rb:86:incall' activesupport (4.1.2) lib/active_support/callbacks.rb:86:in run_callbacks' actionpack (4.1.2) lib/abstract_controller/callbacks.rb:19:inprocess_action' actionpack (4.1.2) lib/action_controller/metal/rescue.rb:29:in process_action' actionpack (4.1.2) lib/action_controller/metal/instrumentation.rb:31:inblock in process_action' activesupport (4.1.2) lib/active_support/notifications.rb:159:in block in instrument' activesupport (4.1.2) lib/active_support/notifications/instrumenter.rb:20:ininstrument' activesupport (4.1.2) lib/active_support/notifications.rb:159:in instrument' actionpack (4.1.2) lib/action_controller/metal/instrumentation.rb:30:inprocess_action' actionpack (4.1.2) lib/action_controller/metal/params_wrapper.rb:250:in process_action' activerecord (4.1.2) lib/active_record/railties/controller_runtime.rb:18:inprocess_action' actionpack (4.1.2) lib/abstract_controller/base.rb:136:in process' actionview (4.1.2) lib/action_view/rendering.rb:30:inprocess' actionpack (4.1.2) lib/action_controller/metal.rb:196:in dispatch' actionpack (4.1.2) lib/action_controller/metal/rack_delegation.rb:13:indispatch' actionpack (4.1.2) lib/action_controller/metal.rb:232:in block in action' actionpack (4.1.2) lib/action_dispatch/routing/route_set.rb:82:incall' actionpack (4.1.2) lib/action_dispatch/routing/route_set.rb:82:in dispatch' actionpack (4.1.2) lib/action_dispatch/routing/route_set.rb:50:incall' actionpack (4.1.2) lib/action_dispatch/journey/router.rb:71:in block in call' actionpack (4.1.2) lib/action_dispatch/journey/router.rb:59:ineach' actionpack (4.1.2) lib/action_dispatch/journey/router.rb:59:in call' actionpack (4.1.2) lib/action_dispatch/routing/route_set.rb:678:incall' rack (1.5.2) lib/rack/etag.rb:23:in call' rack (1.5.2) lib/rack/conditionalget.rb:25:incall' rack (1.5.2) lib/rack/head.rb:11:in call' actionpack (4.1.2) lib/action_dispatch/middleware/params_parser.rb:27:incall' actionpack (4.1.2) lib/action_dispatch/middleware/flash.rb:254:in call' rack (1.5.2) lib/rack/session/abstract/id.rb:225:incontext' rack (1.5.2) lib/rack/session/abstract/id.rb:220:in call' actionpack (4.1.2) lib/action_dispatch/middleware/cookies.rb:560:incall' activerecord (4.1.2) lib/active_record/query_cache.rb:36:in call' activerecord (4.1.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:621:incall' activerecord (4.1.2) lib/active_record/migration.rb:380:in call' actionpack (4.1.2) lib/action_dispatch/middleware/callbacks.rb:29:inblock in call' activesupport (4.1.2) lib/active_support/callbacks.rb:82:in run_callbacks' actionpack (4.1.2) lib/action_dispatch/middleware/callbacks.rb:27:incall' actionpack (4.1.2) lib/action_dispatch/middleware/reloader.rb:73:in call' actionpack (4.1.2) lib/action_dispatch/middleware/remote_ip.rb:76:incall' actionpack (4.1.2) lib/action_dispatch/middleware/debug_exceptions.rb:17:in call' actionpack (4.1.2) lib/action_dispatch/middleware/show_exceptions.rb:30:incall' railties (4.1.2) lib/rails/rack/logger.rb:38:in call_app' railties (4.1.2) lib/rails/rack/logger.rb:20:inblock in call' activesupport (4.1.2) lib/active_support/tagged_logging.rb:68:in block in tagged' activesupport (4.1.2) lib/active_support/tagged_logging.rb:26:intagged' activesupport (4.1.2) lib/active_support/tagged_logging.rb:68:in tagged' railties (4.1.2) lib/rails/rack/logger.rb:20:incall' actionpack (4.1.2) lib/action_dispatch/middleware/request_id.rb:21:in call' rack (1.5.2) lib/rack/methodoverride.rb:21:incall' rack (1.5.2) lib/rack/runtime.rb:17:in call' activesupport (4.1.2) lib/active_support/cache/strategy/local_cache_middleware.rb:26:incall' rack (1.5.2) lib/rack/lock.rb:17:in call' actionpack (4.1.2) lib/action_dispatch/middleware/static.rb:64:incall' rack (1.5.2) lib/rack/sendfile.rb:112:in call' railties (4.1.2) lib/rails/engine.rb:514:incall' railties (4.1.2) lib/rails/application.rb:144:in call' rack (1.5.2) lib/rack/lock.rb:17:incall' rack (1.5.2) lib/rack/content_length.rb:14:in call' rack (1.5.2) lib/rack/handler/webrick.rb:60:inservice' C:/Ruby200-x64/lib/ruby/2.0.0/webrick/httpserver.rb:138:in service' C:/Ruby200-x64/lib/ruby/2.0.0/webrick/httpserver.rb:94:inrun' C:/Ruby200-x64/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread'

like image 439
Adrian Avatar asked Jul 10 '14 02:07

Adrian


Video Answer


2 Answers

I really suspect that it might be the difference in the port you are using. Should be 443 for HTTPS. Try this :

def httpwork
    require "net/http"

    uri = URI("https://yourhost.com/yourpath")
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true
    request = Net::HTTP::Get.new("/yourpath")
    response = http.request(request)
end
like image 64
limekin Avatar answered Sep 21 '22 09:09

limekin


Quick and dirty trick for local development: you can comment the http.use_ssl = true line or leave it uncommented and add the following line bellow : http.verify_mode = OpenSSL::SSL::VERIFY_NONE

It worked for me each time

like image 29
lucyjosef Avatar answered Sep 18 '22 09:09

lucyjosef