我正在尝试使用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本身?
答案 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。这可能对遇到类似问题的人有用。