我试图使用Ruby的SOAP支持如下:如何让Ruby的OpenSSL库忽略自签名证书错误?
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本身?
你是说我重新定义'VERIFY_PEER'为'VERIFY_NONE'的值?这是有风险的,因为我无法确定检查验证方法的代码是否检查VERIFY_NONE或VERIFY_PEER的值。重新定义常量是绝对的最后手段。 – 2009-10-16 01:09:58
感谢Gaius。这是相当鬼鬼祟祟的,你是对的。 – avguchenko 2009-10-16 14:08:03
我应该说,它*会*工作。这可能是最后的手段,因为它是偷偷摸摸的,但如果其他所有的都失败了...... – 2009-12-18 05:06:00