我試圖使用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