【问题标题】:How can I make ruby's xmlrpc client ignore SSL certificate errors?如何让 ruby​​ 的 xmlrpc 客户端忽略 SSL 证书错误?
【发布时间】:2011-06-12 12:40:36
【问题描述】:

在 ruby​​ 中使用 xmlrpc/client 访问 XML-RPC 服务时,当服务器证书无效时,它会抛出 OpenSSL::SSL::SSLError。如何让它忽略此错误并继续连接?

【问题讨论】:

    标签: ruby ssl xml-rpc


    【解决方案1】:

    其实客户端已经更新了,现在可以直接访问http连接了: https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/41286/diff/lib/xmlrpc/client.rb

    xmlrpc.http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    

    但最好设置ca_fileca_path。 我仍然看不到将此类配置应用于_async 调用的选项。

    更新:通过猴子修补客户端对象找到了解决方法:

        xmlrpc_client.http.ca_file = @options[:ca_file]
        xmlrpc_client.instance_variable_set(:@ca_file, @options[:ca_file])
        def xmlrpc_client.net_http(host, port, proxy_host, proxy_port)
          h = Net::HTTP.new host, port, proxy_host, proxy_port
          h.ca_file = @ca_file
          h
        end
    

    所以你需要旧方法和猴子补丁。我们还要添加一个实例变量,否则新方法看不到实际值。

    【讨论】:

      【解决方案2】:

      原来是这样的:

      xmlrpc = ::XMLRPC::Client.new("foohost")
      xmlrpc.instance_variable_get(:@http).instance_variable_set(:@verify_mode, OpenSSL::SSL::VERIFY_NONE)
      

      这适用于 ruby​​ 1.9.2,但显然是在戳内部,所以真正的答案是“API 不提供这样的机制,但这是一个 hack”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-05
        • 1970-01-01
        相关资源
        最近更新 更多