首页 文章

使用Ruby on Rails的HTTP GET请求:OpenSSL :: SSL :: SSLError

提问于
浏览
5

我收到以下错误

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

这是我在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

快速注意主机/端口号是隐藏的,但格式是这样的(不像“stackoverflow.com/question”)

在httpwork.html.erb中

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

这是完整的堆栈跟踪

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:inblock in start_thread'`

2 回答

  • 2

    我真的怀疑它可能是你正在使用的端口的差异 . HTTPS应为443 . 试试这个 :

    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
    
  • 0

    本地开发的快速而肮脏的技巧:您可以对 http.use_ssl = true 行进行注释或将其取消注释,并在下面添加以下行: http.verify_mode = OpenSSL::SSL::VERIFY_NONE

    它每次都适合我

相关问题