我正在尝试做一个概念证明,Ruby可以通过SSL使用Savon调用SOAP Web服务。我是一个菜鸟,所以我提前为任何错误道歉。
我按照以下链接中的教程让SoapUI使用密钥库创建模拟SSL服务:http://www.soapui.org/soap-mocking/tips-and-tricks/securing-mockservices-with-ssl.html
以下是我的ruby代码目前的样子:
client = Savon.client(
wsdl: "http://www.webservicex.net/CurrencyConvertor.asmx?WSDL",
endpoint: "https://localhost:8002/mockCurrencyConvertorSoap",
ssl_version: :SSLv3,
ssl_cert_key_file: "lib/private-key.key",
ssl_cert_file: "lib/public-key.pub",
ssl_ca_cert_file: "lib/trust-soapui.pem",
ssl_cert_key_password: "password",
ssl_verify_mode: :peer,
adapter: :httpclient,
log_level: :debug,
log: true,
logger: Rails.logger,
pretty_print_xml: true
)
response = client.call(:conversion_rate,
message: {"FromCurrency" => "USD", "ToCurrency" => "JPY"} )
以下是我收到的错误:
HTTPI::SSLError (hostname does not match the server certificate)
我相信我可能从根本上错误地创建了键,即使它来自SoapUI Mock Service使用的相同keystore.jks。我错过了什么?
注意:如果我设置
ssl_verify_mode: :none,这显然会有效,但我真的想检查我的证书是否正确。
我在使用RailsInstaller的Windows 7专业版。
Ruby 1.9.3
Rails 3.2.11
萨文2.11.1
httpclient 2.6.0.1