2012-05-24 67 views
0

如何关闭像jiraSOAP这样的gem中的证书验证。验证是内置的,但我真的不需要验证,因为服务器&客户端是我的属性。应该可以调整宝石来停止验证。Ruby - jiraSOAP - 关闭OpenSSL证书验证

https://github.com/Marketcircle/jiraSOAP/blob/master/lib/jiraSOAP.rb

此证书校验错误阻止我上移动到我的项目。我尝试了其他来自论坛的解决方案,以升级我的/etc/ssl/cert,将OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE添加到我的项目中。但他们都没有工作。

require 'jiraSOAP' 
jira = JIRA::JIRAService.new "https://server/rpc/soap/jirasoapservice-v2?wsdl" 
jira.login username, password 


/usr/local/rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/net/http.rb:799:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError) 
+0

“*我真的不需要自服务器和客户端以来的验证是我的属性*“。证书验证(以及主机名验证)可以确保您的客户端确实与目标服务器进行通话。事实上,他们是你的财产是无关紧要的:你仍然想确保你与*你的*服务器确实沟通。 – Bruno

回答

0

我能解决它修改Handsoap gem忽略只有我的主机证书检查。

 handsoap-1.1.8/lib/handsoap/http/drivers/net_http_driver.rb 

修改这个新的HTTP客户端后 - -

 http_client = Net::HTTP.new(url.host, url.port) 

添加此 -

文件在宝石路径修改

 #Added these new lines below 
     if url.host == "server" #ignore cert check only for this host 
     http_client.verify_mode = OpenSSL::SSL::VERIFY_NONE 
     end 
+0

再次,不要忽略证书验证。这就是保证你正在与你想要的主机通话的原因。否则,您可能正在与冒充它的主机通话。 – Bruno