5

我正在使用 Soap4r 和 HTTPClient 与 Web 服务进行交互。该服务仅接受使用 X509 证书进行数字签名的请求。我已经完成了生成私钥、获取证书请求 (CSR) 以及从权威机构(托管 Web 服务的公司)获取实际证书的步骤。

有没有关于如何做到这一点的例子?

4

1 回答 1

5

您正在使用的网络服务似乎使用WS-Security。WS-Security 是一种 OASIS 标准,它利用 XML 签名和 XML 加密来保护 SOAP 消息。但是,据我所知 Soap4r 不支持 WS-Security。自己实现它是非常没有希望的,因为它相当复杂(并且涉及诸如 XML-Canonicalization 之类的烦人的东西)。

WSO2 为其框架(http://wso2.org/projects/wsf/ruby)提供了 ruby​​ 绑定,也许您可​​以使用它。如果不是,您可能必须包装一些 C 库(如 libxmlsec)来对 Soap4r 创建的消息进行签名。它有 ruby​​ 绑定(http://rubygems.org/gems/xmlsec-ruby),但我认为它们没有公开 xmlsec 的全部功能。

如果这是一个选项,您可以在 Java 中实现您的代码,因为它有很多强大的开源 SOAP 库,支持 WS-Security,如 Metro ( http://metro.java.net/ )、Axis2 ( http:// ws.apache.org/axis2/ ) 和 CXF ( http://cxf.apache.org/ )

于 2011-07-16T10:27:19.200 回答