代码之家  ›  专栏  ›  技术社区  ›  Chris Bunch

Ruby SOAP SSL问题

  •  1
  • Chris Bunch  · 技术社区  · 16 年前

    我在Ruby中有一个SOAP客户机,我正试图使用Ruby SOAP服务器,但没有用。客户机在使用python SOAP服务器的ssl上运行良好,但在Ruby版本上则不行。服务器的外观如下:

    require 'soap/rpc/standaloneServer'
    require 'soap/rpc/driver'
    require 'rubygems'
    require 'httpclient'
    
    def cert(filename)
      OpenSSL::X509::Certificate.new(File.open("path to cert.cert") { |f|
        f.read
      })
    end
    
    def key(filename)
      OpenSSL::PKey::RSA.new(File.open("path to rsaprivate.key") { |f|
        f.read
      })
    end
    
    class Server < SOAP::RPC::HTTPServer
     ~code snipped for readability~
    end
    
    server = Server.new(:BindAddress => HelperFunctions.local_ip, :Port => 1234, :SSLCertificate => cert("path to cert"), :SSLPrivateKey => key("path to rsa private key"))
    new_thread = Thread.new { server.start }
    

    为了可读性,我删掉了一些代码(例如,我在其中公开了一些方法),并且它可以在关闭ssl的情况下正常工作。但是当客户端尝试连接时,它会看到:

    warning: peer certificate won't be verified in this SSL session
    /usr/lib/ruby/1.8/net/http.rb:567: warning: using default DH parameters.
    /usr/lib/ruby/1.8/net/http.rb:586:in `connect': unknown protocol (OpenSSL::SSL::SSLError)
    

    我试着接受一些建议 this post 现在我看到这条信息:

    /usr/lib/ruby/1.8/soap/httpconfigloader.rb:64:in `set_ssl_config': SSL not supported (NotImplementedError)
    

    关于如何解决这个问题的任何想法都将非常感谢。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Chris Bunch    16 年前

    精氨酸我在努力跟上 this link 结果我遗漏了一个简单的include语句:

    require 'webrick/https'
    

    结合原始问题中链接的帮助,解决了问题。希望这能帮其他人节省一个小时的悲伤。

        2
  •  1
  •   Brad Whitaker    16 年前

    未安装httpclient可能会导致“不支持SSL”。

        3
  •  0
  •   chef_southpark    16 年前

    我也是。。别忘了把:sslenable=>真的花几个小时来弄清楚…

    server = Server.new(:BindAddress => HelperFunctions.local_ip, :Port => 1234, :SSLEnable => true, :SSLCertificate => cert("path to cert"), :SSLPrivateKey => key("path to rsa private key"))