1

私は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)

この投稿からいくつかのアドバイスを試してみたところ、次のメッセージが表示されました。

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

これを修正する方法についてのアイデアは大歓迎です。

4

3 に答える 3

2

引数。このリンクをたどろうとしたところ、単純な include ステートメントが欠落していたことがわかりました。

require 'webrick/https'

それは、元の質問のリンクからの助けと組み合わされて、問題を解決します。うまくいけば、これで他の誰かが1時間の悲しみを救うことができます:)

于 2008-10-14T02:26:46.203 に答える
1

「SSL がサポートされていません」は、httpclient がインストールされていないことが原因である可能性があります。

于 2009-04-21T01:43:30.180 に答える