2011-06-20 57 views
6

我正在努力让萨贡宝石连接到我们的服务器之一。我不断收到一个错误,指出我无法越过ssl。我已阅读了大量教程和修复程序,但似乎没有任何工作。Savon 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 
+2

你一定是SSL在端口4433上运行? –

+0

据我所知 - 当我通过浏览器访问wsdl文件时 - 如果我通过浏览器访问它,它会将其标记为自签名证书。我想知道为什么/如何verify_mode =:none不踢英寸 – Northband

+0

您使用的是哪种版本的httpi gem? – rubiii

回答

1

不知道,如果你这样做了,但我不得不使用萨翁的一个项目,我发现它非常有用的,以确保SoapUI(http://www.eviware.com/)认为应该使用Soap服务器。然后,您可以输出来自两者的SOAP请求并进行比较。

0

Ruby的net/http处理SSL握手中有一个bug

尝试迫使SSL版本得到解决的bug:

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

萨翁2.x的支持SSL的全局选项:

Savon.client(ssl_verify_mode: :none) 

Savon.client(ssl_version: :SSLv3)