Ruby SOAP SSL问题

时间:2008-10-14 01:04:22

标签: ruby soap ssl

我在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 个答案:

答案 0 :(得分:2)

精氨酸。我试图跟随this link,结果我错过了一个简单的包含声明:

require 'webrick/https'

结合原始问题中链接的帮助解决了问题。希望这可以让其他人在一小时的悲痛中拯救他们:)

答案 1 :(得分:1)

“不支持SSL”可能是因为没有安装httpclient。

答案 2 :(得分:0)

我也是..不要忘了把:SSLEnable =&gt;真的花了几个小时搞清楚......

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