如何在savon 2.0.2中使用证书

时间:2013-01-09 13:49:20

标签: ruby-on-rails ruby ruby-on-rails-3 soap savon

我最近更新了savon 2.0.2并且我用它来通过soap发送一些xml。 我必须使用证书,但在更新新savon版本的语法后,将忽略证书。有人可以帮助我使用新语法 - 我可能错过了一些东西......我正在运行ruby 1.9.3和rails 3.2.9

旧(工作)版本:

client = Savon::Client.new do | wsdl |
  wsdl.endpoint = CONFIG['endpoint']
  wsdl.namespace = CONFIG['namespace']
end

  response = client.request(:ns, :getToken) do

    http.auth.ssl.cert = OpenSSL::X509::Certificate.new(
      File.read(Rails.root + "lib/certs/cert.pem"))
    http.auth.ssl.cert_key_file = Rails.root + "lib/certs/key.pem"
    http.auth.ssl.verify_mode = :none

    soap.body = {

      // body
    }
    soap.header={
      "ns:account"=>{
        :login=>CONFIG['login'],
        :password=>CONFIG['password']
      }      
    }
  end

现在我尝试在2.0.2中完全相同,但它不起作用 - xml没问题,但证书被忽略了......

到目前为止,我得到了:

  client = Savon.client do
  endpoint CONFIG['endpoint']
  namespace CONFIG['namespace']
  namespace_identifier :ns

  ssl_cert_file OpenSSL::X509::Certificate.new(File.read(Rails.root + "lib/certs/cert.pem"))
  ssl_cert_key_file Rails.root + "lib/certs/key.pem"
  ssl_verify_mode :none


  soap_header(
      "sus:account"=>{
        :login=>CONFIG['login'],
        :password=>CONFIG['password']
      }      
   )

end

response = client.call(:getToken) do

      message(
     // body
        )

end

任何帮助都将非常感谢!!!

1 个答案:

答案 0 :(得分:0)

使用ssl_verify_mode :none告诉Savon关闭SSL检查。这就是证书被忽略的原因。正如评论中所指出的,可以在the Savon site上找到完整的文档。