0

我正在使用 Delphi 7 的HTTPReqResp组件将数字签名的 SOAP XML 文档发送到 HTTPS Web 服务。我使用 Eldos XML BlackBox 并已将所有transformAlgorithmsCanonicalizationMethodsignaturemethod等设置为 Web 服务所需的,并已与技术支持人员确认了这一点。

我已经使用 XML BlackBox 和这个XML Verifier website验证了签名。

两种方式都确认签名是正确的。但是,当我通过 发送 XML 文档时HTTPReqResp.execute,我得到的响应是BadSignature (The signature value is invalid).

最初,由于 XML 错误(格式错误等),我收到了不同的错误消息。看来该服务将首先进行所有标准格式检查,然后尝试验证签名。因为我得到了BadSignature响应,所以 XML 的其余部分必须是正确的。

我想我在这里有两个问题。

  1. HTTPReqResp 组件是否更改 XML。

  2. 网络服务是否可能会更改 XML。

该站点正在使用 Access Manager WebSEAL。

4

1 回答 1

0

接收方很可能以某种方式获得了修改后的文档。一些小的修改不应影响签名(至少是这样),因此您可能需要检查以下内容:

  1. 接收伙伴使用的“推荐”编码。一些接收合作伙伴非常讨厌的做法是偏爱一种编码形式而完全忽略其他形式。应该使用 XML 签名,utf-8但我见过只接受的服务器iso-8859-1

  2. 确保您不会在签名后意外更改编码。

  3. 验证接收伙伴是否正在使用合理的规范化方法。

  4. 与您的接收合作伙伴确认您的文档中没有添加任何无关的元素。

另外,您是否尝试过使用 SecureBlackBox 组件发布此内容?他们还有一个可以执行 SSL 的 HTTP 客户端,也可以用来验证通过线路发送的字节。

于 2013-03-07T21:40:21.963 回答