【发布时间】:2020-07-28 16:05:20
【问题描述】:
我在 SO 中发布了这个,因为我无法在任何地方找到解决方案,并且花了很多时间来找出问题所在。我希望一些遇到同样问题的开发人员将来能找到这篇文章:)
C14N 转换在 .NET 和 Java 中的实现方式似乎不同。两种不同的“标准”。
如果 Java 客户端可能需要验证包含的 xml 签名,切勿手动将 xmlns:xml 命名空间添加到您的 xml 文档中。 Java 似乎在验证包含的签名之前剥离了 xmlns:xml 声明(!)
【问题讨论】:
-
您使用什么库来处理签名?也许 digidoc4j 会更好用?它完全符合 eIDAS 和欧盟
-
嗨@MargusPala。我正在使用 .NET 框架(4.7.2)。我的签名在由 Java 客户端验证时失败,但在使用 .NET Framework 的客户端中正常。我在 .NET 中使用 SignedXml API,在 .NET Framework 中使用“标准”C14N 转换。我的错误是我手动将 xmlns:xml 命名空间添加到正在签名的 xml 中。 Java 在其 C14N 转换实现中删除了那个。
标签: java .net xml digital-signature