Je travaille sur l'API SOAP level3. Tout fonctionnait merveilleusement jusqu'à récemment quand OpenSSL a été mis à jour.sslv3 message inattendu lors de l'utilisation de soap4r
est ici la sortie complète du message d'erreur:
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'
L'erreur est très similaire à l'erreur signalée ici:
http://dev.ctor.org/http-access2/ticket/223
la solution que la personne qui a ouvert ce qui précède était "J'ai corrigé ce problème en transmettant SSL :: OP_NO_TICKET en tant qu'option à SSLConfig." Je l'ai essayé de le faire par:
object = WsdlToRubyPortType.new
object.options['client.protocol.http.ssl_config.options'] = OpenSSL::SSL::OP_NO_TICKET
J'ai essayé ce qui suit ainsi:
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"
Les résultats sont identiques et le message d'erreur persiste. J'ai essayé d'ajouter une ligne au fichier soap/property mais il n'est pas reconnu comme une option valide par le httpconfigloader.
Toute aide serait grandement appréciée, je suis complètement coincé. Je pense que la réponse est évidente mais ne peut pas le voir.
Ce que j'avais compris, c'est le soap4r. J'avais espéré arriver à l'objet http sans pirater soap4r à l'instance http sous-jacente. Je suis capable de définir les autres options de configuration ssl en utilisant les méthodes que j'ai mentionnées dans le texte du ticket. –