Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Savon SSL问题_Ruby On Rails_Ruby_Ssl_Savon_Httpi - Fatal编程技术网

Ruby on rails Savon SSL问题

Ruby on rails Savon SSL问题,ruby-on-rails,ruby,ssl,savon,httpi,Ruby On Rails,Ruby,Ssl,Savon,Httpi,我正在努力让Savon gem连接到我们的一台服务器。我不断收到一个错误,说明我无法通过ssl。我已经阅读了很多教程和修复程序,但似乎没有一个是有效的 感谢您的帮助-如果我能度过难关,这将是我的星期一:-) 错误: D, [2011-06-20T09:43:02.002993 #10328] DEBUG -- : Retrieving WSDL from: http://path_to_wsdl:4443/sm/services/mailing/2009/03/02?wsdl D, [2011-

我正在努力让Savon gem连接到我们的一台服务器。我不断收到一个错误,说明我无法通过ssl。我已经阅读了很多教程和修复程序,但似乎没有一个是有效的

感谢您的帮助-如果我能度过难关,这将是我的星期一:-)

错误:

D, [2011-06-20T09:43:02.002993 #10328] DEBUG -- : Retrieving WSDL from: http://path_to_wsdl:4443/sm/services/mailing/2009/03/02?wsdl
D, [2011-06-20T09:43:02.129057 #10328] DEBUG -- : HTTPI executes HTTP GET using the httpclient adapter
/.rvm/gems/ruby-1.9.2-p0/gems/httpclient-2.2.1/lib/httpclient/session.rb:276:in `connect': SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: sslv3 alert unexpected message (OpenSSL::SSL::SSLError)
我的代码:

require 'savon'

client = Savon::Client.new "path_to_my_wsdl"

client.http.auth.ssl.cert_file = "path/cert.pem"

client.http.auth.ssl.cert_key_file = "/path/localhost.key"
client.http.auth.ssl.verify_mode = :none

client.wsse.credentials "username", "password"

client.wsdl.soap_actions

不确定您是否已经这样做了,但是当我不得不在一个项目中使用Savon时,我发现确保Soap服务器在SoapUI中按照我认为应该的方式工作是非常有用的(http://www.eviware.com/). 然后,您可以输出来自这两者的SOAP请求并进行比较

Ruby的net/http对SSL握手的处理中存在一个漏洞

尝试强制SSL版本绕过此错误:

client.http.auth.ssl.sock.ssl_version="SSLv3"

Savon 2.x支持ssl全局选项:

Savon.client(ssl_verify_mode: :none)


您确定SSL正在端口4433上运行吗?据我所知,当我在https下访问wsdl文件时,如果我通过浏览器进行访问,它会将其标记为自签名证书。我想知道为什么/如何验证模式=:none没有启动。您使用的是哪个版本的httpi gem?运行的是httpi(0.9.3),但现在更新为0.9.4。尽管输出相同:-(不确定这是否是问题所在,但如果verify_mode设置为:none,则可以尝试删除除非语句。
Savon.client(ssl_version: :SSLv3)