如何告诉Ruby的OpenSSL库忽略自签名证书错误?

时间:2009-10-12 14:48:09

标签: ruby soap wsdl openssl certificate

我正在尝试使用Ruby的SOAP支持,如下所示:

SERVICE_URL = 'https://...'
...
def create_driver
  ::SOAP::WSDLDriverFactory.new(SERVICE_URL).create_rpc_driver
  driver.options['protocol.http.ssl_config.verify_mode']  = OpenSSL::SSL::VERIFY_NONE
  driver.options['protocol.http.ssl_config.client_cert']  = @certificate_path
  driver
end

但是对new(SERVICE_URL)的调用以“OpenSSL::SSL::SSLError: certificate verify failed”爆发。如何在第一次调用时使用等效的driver.options['protocol.http.ssl_config.verify_mode'] = OpenSSL::SSL::VERIFY_NONE来检索WSDL本身?

3 个答案:

答案 0 :(得分:5)

我在我的加载路径上放了一个名为“soap/property”的文件,例如:

- lib/
    - foo.rb
    - foo/
        - bar.rb
    - soap/
        - property

并将其放在文件中:

client.protocol.http.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE

或者,如果您有多个具有相同前缀的设置,则可以使用组语法:

[client.protocol.http]
ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE
...

答案 1 :(得分:0)

试试这个:

...
  OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
  ::SOAP::WSDLDriverFactory.new(SERVICE_URL).create_rpc_driver
...

答案 2 :(得分:0)

我偶然发现了这个网址:https://gist.github.com/fnichol/867550。这可能对遇到类似问题的人有用。