3

レベル 3 の SOAP API に反対しています。最近 OpenSSL が更新されるまで、すべてがうまく機能していました。

エラーメッセージの完全な出力は次のとおりです。

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'

このエラーは、ここで報告されているエラーとよく似ています。

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

上記を開いた人が「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 によって有効なオプションとして認識されません。

どんな助けでも大歓迎です、私は完全に立ち往生しています。答えは明らかだと思いますが、見えません。

4

4 に答える 4

0

最新のgemでは、次のようにオプションを設定できるようです。

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

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

于 2011-06-13T15:39:20.797 に答える
0

HTTP インスタンスに構成を設定する必要があります。

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

于 2010-12-20T05:59:29.540 に答える
0

最終的には soap4r を削除しました。これは非常に時代遅れです。ライブラリを切り替えることは、理想的ではありませんが、問題を解決しました。このような問題が発生した場合は、savonに切り替えることをお勧めします。実際は思ったより簡単だった

于 2012-01-09T14:45:11.573 に答える
0

推測: 最初に OP_ALL を指定し、次に OP_NO_TICKET ビットで OR を指定する必要がある場合があります。

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

これはテストしていません。

于 2016-07-08T16:25:51.267 に答える