2010-12-14 6 views
3

私はlevel3 SOAP APIに対して取り組んでいます。 OpenSSLが更新されたばかりまですべてが素晴らしく働いていました。sslv3 alert soap4rを使用すると予期しないメッセージが表示される

http://dev.ctor.org/http-access2/ticket/223

人が上記開いたソリューション:

OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: sslv3 alert unexpected message): 
    httpclient (2.1.5.2) lib/httpclient/session.rb:247:in `connect' 
    httpclient (2.1.5.2) lib/httpclient/session.rb:247:in `ssl_connect' 
    httpclient (2.1.5.2) lib/httpclient/session.rb:639:in `connect' 
    httpclient (2.1.5.2) lib/httpclient/timeout.rb:128:in `timeout' 
    httpclient (2.1.5.2) lib/httpclient/session.rb:631:in `connect' 
    httpclient (2.1.5.2) lib/httpclient/session.rb:522:in `query' 
    httpclient (2.1.5.2) lib/httpclient/session.rb:147:in `query' 
    httpclient (2.1.5.2) lib/httpclient.rb:953:in `do_get_block' 
    httpclient (2.1.5.2) lib/httpclient.rb:765:in `do_request' 
    httpclient (2.1.5.2) lib/httpclient.rb:848:in `protect_keep_alive_disconnected' 
    httpclient (2.1.5.2) lib/httpclient.rb:764:in `do_request' 
    httpclient (2.1.5.2) lib/httpclient.rb:666:in `request' 
    httpclient (2.1.5.2) lib/httpclient.rb:596:in `post' 
    /Users/glanotte/.rvm/gems/ruby-1.8.7-p302/gems/soap4r-1.5.8/lib/soap/streamHandler.rb:238:in `send_post' 
    /Users/glanotte/.rvm/gems/ruby-1.8.7-p302/gems/soap4r-1.5.8/lib/soap/streamHandler.rb:172:in `send' 
    /Users/glanotte/.rvm/gems/ruby-1.8.7-p302/gems/soap4r-1.5.8/lib/soap/rpc/proxy.rb:179:in `route' 
    /Users/glanotte/.rvm/gems/ruby-1.8.7-p302/gems/soap4r-1.5.8/lib/soap/rpc/proxy.rb:143:in `call' 
    /Users/glanotte/.rvm/gems/ruby-1.8.7-p302/gems/soap4r-1.5.8/lib/soap/rpc/driver.rb:181:in `call' 
    (eval):6:in `validateSLServiceAvailability' 

は、エラーがここに報告されたエラーに非常によく似ています。ここでは

は、エラー・メッセージの完全な出力であります「SSL :: OP_NO_TICKETをオプションとしてSSLConfigに渡すことでこれを解決しました。」私も、次の試してみました

object = WsdlToRubyPortType.new 
object.options['client.protocol.http.ssl_config.options'] = OpenSSL::SSL::OP_NO_TICKET 

object.options['client.protocol.http.ssl_config.options'] = "OpenSSL::SSL::OP_NO_TICKET" 
object.options['client.protocol.http.ssl_config.options'] = "SSL::OP_NO_TICKET" 

結果が同一であると、エラーメッセージが消えない私がすることによってこれを行うことを試みました。 soap/propertyファイルに行を追加しようとしましたが、httpconfigloaderによって有効なオプションとして認識されません。

ご協力いただければ幸いです。私は完全に固執しています。答えは明らかだが、それを見ることはできないと感じている。

答えて

0

私たちはsoap4rを落としてしまいました。それはひどく古くなっています。理想的ではないものの、ライブラリの切り替えは問題を解決しました。このような問題に遭遇している人は、savonに切り替えることをおすすめします。

object = WsdlToRubyPortType.new 
object.options['client.protocol.http.ssl_config.options'] = OpenSSL::SSL::OP_ALL 
object.options['client.protocol.http.ssl_config.options'] |= OpenSSL::SSL::OP_NO_TICKET 

はこれをテストしていません:あなたは、まずOR OP_NO_TICKETビットでOP_ALLを指定する必要があります。実際に私はそれだけで推測

0
あなたはHTTPインスタンスに設定を設定する必要があります

のhttp = HTTPClient.new
http.ssl_config.options =のOpenSSL :: SSLは:: OP_NO_TICKET

+0

それほど私が把握していたのは、catchがsoap4rです。 soap4rを基になるhttpインスタンスにハッキングせずにhttpオブジェクトにアクセスすることを望んでいました。私はチケットのテキストで述べた方法を使って他のssl configオプションを設定することができます。 –

0

それはそうです最新の宝石では、これはオプションの設定方法です。

jira.driver.options["protocol.http.ssl_config.options"] = OpenSSL::SSL::OP_NO_TICKET 

ここで、「jira」はJiraToolクラスのインスタンスです。

+0

どの宝石ですか? Soap4rは過去3年間変化していないようです。これは私が試したものと同じように見えます: 'object = WsdlToRubyPortType.new object.options ['client.protocol.http.ssl_config.options'] = OpenSSL :: SSL :: OP_NO_TICKET' –

0

だろうと思ったよりも簡単でした。

関連する問題