SAVON是否支持客户端证书身份验证

时间:2013-04-12 13:58:37

标签: ruby ssl-certificate savon

我正在评估savon是否使用了webservices ...但是如果我可以使用SSL客户端证书对提供SOAP Web服务的服务器进行身份验证,我就找不到任何信息。我阅读了文档,但没有找到任何相关内容。

有人知道SAVON是否支持客户端证书身份验证吗?

此致 FAK

2 个答案:

答案 0 :(得分:14)

Savon的最新稳定版本(此时为2.2.0)通过全局选项支持SSL客户端证书。请参阅the documentation中的SSL部分。

以下是一些示例代码,假设httpclient与httpi:

一起使用
savonConfig = {
    :namespace => "http://...com",
    :endpoint => 'https://...:557/x/b/c',
    #:wsdl => 'https://...:557/x/b/c?wsdl',
    :log_level => :debug,
    :log => true,
    :ssl_verify_mode => :none,
    :ssl_cert_file => 'publicCert.pem',
    :ssl_cert_key_file => 'privateKey.pem',
    :ssl_cert_key_password => '1234',
    :open_timeout => 600,
    :read_timeout => 600
}

client = Savon.client savonConfig

soapBody = {
...
}


calcResponse = client.call(:charge, :message => soapBody)

如果您有pfx证书/密钥文件,则可能无法直接使用它 - 因此您可能希望将它们拆分为单独的文件 - 请参阅此页面以获取信息:Extract public/private key from PKCS12 file for later use in SSH-PK-Authentification

希望有所帮助! 丹尼尔

答案 1 :(得分:2)

我们在尝试让savon客户端使用ssl客户端身份验证时遇到问题,但同时绕过主机验证....

https://github.com/savonrb/savon/issues/679

client = Savon.client(log_level: :debug,
log: true,
ssl_verify_mode: :none,
ssl_cert_file: (Rails.root + 'signed.cer').to_s,
ssl_cert_key_file: ('private.key').to_s,
wsdl: "https://example.com/Service?wsdl",
endpoint: "https://example.com/Service")

与Like失败 HTTPI GET请求wir.dhswir.org(net_http) HTTPI :: SSLError:SSL_read:ssl握手失败

没有moe信息..

我们尝试过savon 2.2.0,2.3.0和2.11.0。略有不同的错误信息。

我们使用相同的PEM格式化密钥和证书来savon并使用unix WGET进行比较。如果我们不通过--no-check-certificate,WGET将会失败,但是如果我们添加它通过并且可以执行ssl客户端身份验证并获取访问权

wget 'https://example.com/CDC/VaccinationService?wsdl'  --certificate=example-int-wi-signed.cer --private-key=private.key -O- --no-check-certificate