问题标签 [xml-dsig]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1866 浏览

c# - 签名xml标签在另一个位置

我正在使用 c# 使用此代码对文档进行签名

我要签名的 xml 文档有以下标签插入签名的位置

但标签签名出现在最后

因为我可以移动或分配他们将签署 xml 的位置?

0 投票
2 回答
10807 浏览

java - XMLDSig:我是否必须在封装签名中指定参考 URI

假设我有这样的 xml:

签约后我得到:

<Signature>被包围的事实是否<CD>意味着它完全签署了元素,或者因为<ds:Reference URI="">它意味着整个 XML 被签署?通过阅读规范http://www.w3.org/TR/xmldsig-core/我留下的印象是封装签名不需要参考 URI。这个对吗?

0 投票
1 回答
1812 浏览

xml - 大数验证失败,类型为 xs:integer

如果我尝试验证以下 XML:

针对xmldsig-core-schema.xsd架构(可以在互联网上轻松找到),然后我收到以下验证错误:

但是,我在互联网上找到的许多帖子让我相信 xs:integer 类型应该支持无限数量的字符。那么,我的验证行为是否不当?我现在尝试了 2 种不同的验证技术 - 首先是 .NET System.Xml 库 (XmlReader),其次是 Notepad++ 的 XML 插件。两者都失败并显示相同的消息。他们都错了吗?或者,实际上 xs:integer 值可以采用的大小有限制吗?

0 投票
0 回答
239 浏览

wcf - 具有用户名安全性的 WCF 服务应接受带有附加 ws-security 标头的消息。可能吗?

我有一个具有经典用户名密码消息安全性的 wcf 服务。在传输级别,此服务具有 https

绑定是典型的

但。现在我们应该将客户端签名添加到这个交换中。我们决定为此签名使用标准 wsse 标头。例子:

但是 WCF 不想使用多个 wsse 标头。它说“验证消息的安全性时发生错误。” 没有任何附加信息,它在我自己的代码之前。

我可以做些什么来在服务器端获取我的签名并且我的用户名验证有效吗?

0 投票
0 回答
2511 浏览

cxf - CXF WS-Security - X509IssuerSerial 验证失败

我在使用 CXF WS-Security 和签名验证时遇到了问题。我WSS4JInInterceptor在服务器端使用以验证Body元素上的签名。
- 当我使用 e BinarySecurityToken( DirectReference) 作为关键标识符类型时,一切正常;
- 当我使用X509IssuerSerial( IssuerSerial) 作为服务器端的密钥标识符类型签名验证失败。
这是服务器端的配置:

如果我(从客户端)发送带有此 SOAPHeader 的 SOAPEnvelope:

我会得到 SOAPFault:

使用调试日志输出,我没有得到太多信息。但是在调试时,我发现org.apache.wss4j.dom.processor.SignatureProcessor此时失败了:

在 wss4j-ws-security-dom-2.1.0 中引发异常的是第 197 行。这意味着 certificate 和 publicKey 为空。这使我得出一个结论,即我从一开始就想得不够——我没有意识到没有可以验证签名的证书。另外,我的结论是,在 X509IssuerSerial 的情况下,只有在接收端(在这种情况下为服务器)端有证书的情况下,您才能验证签名。
有没有人有更好的解释?

0 投票
1 回答
4556 浏览

c# - 使用 XmlDsigExcC14NTransform 和 InclusiveNamespaces 验证 XML 签名时遇到问题

我有一个需要验证签名的 XML 文档。SignedInfo 元素具有指定算法“ http://www.w3.org/2001/10/xml-exc-c14n# ”的元素 CanonicalizationMethod 并且还有一个包含 PrefixList 属性的子元素 InclusiveNamespaces,如下所示:

我使用以下代码来创建我的 C14Transform 对象:

从哪里来"soapenv"PrefixList属性。

当规范化上述 XML(忽略空格)时,它应该像这样出来(注意第xmlns:soapenv="..."2 行的部分):

我遇到的问题是xmlns:soapenv="..."规范化时不包含该部分,导致签名验证失败。

我可以通过以编程方式插入它来解决这个问题,但这很痛苦,因为 PrefixList 内容会有所不同。

0 投票
1 回答
141 浏览

c# - c#XmlDsig。在根元素内设置签名元素

我有一个这样的 XML:

我需要用这种格式签名:

我尝试了两种方法(使用包络和包络方法)。但是使用第一种方法,我得到了数据顶部的签名元素:

使用第二种方法(封装),我得到数据底部的签名元素:

我只需要根元素 () 包装整个 XML(包括签名)。我知道在对 XML 进行签名后,就无法修改某些内容,否则签名就会损坏。因此,如果您对我的问题有任何想法,请告诉我。

提前感谢您抽出宝贵时间。

0 投票
1 回答
96 浏览

xades4j - 将用户名存储为 XAdES 签名的一部分

使用 Web 应用程序的多个用户可以使用公司密钥和证书对文档进行电子签名。签名以 XAdES 格式生成。我想在签名本身中保留要求签名的用户名的痕迹。首先,我不确定这是否合法

如果是这样,是否有人知道存储该信息的 XML 元素?我只是找不到适合这种需要的。

0 投票
2 回答
1585 浏览

xml - Xades 多重签名

大家好,提前感谢您的帮助。

我的目标是让两个或更多不同的人逐步处理文档:

  • 第一个将创建 xml,只编译文档的一小部分(根据他的角色),然后只对他编译的内容进行签名。

  • 第二个将从第一个人那里获取文档并编译他的小节,而不修改第一个人写的任何内容。然后他将添加他的签名,在他的小节和第一个人的一个上签名。

  • 等等...

我该怎么做?根据标准,XAdES 特定的 xml 元素(例如用于签名的证书的 ID)都在<object>元素内部(在signed properties 子元素中),这在我看来意味着只有一个人可以对对象进行签名(即文件)一次,而不必覆盖签名数据。

我错了吗?如果有一种我没有考虑过的方法,有人可以帮助我理解吗?

谢谢,

一个。

0 投票
2 回答
1958 浏览

java - xmldsig apache santuario 提供程序与 jdk 提供程序不兼容吗?

我正在创建一个 xml 数字签名,就像我发现的几乎所有示例中提到的那样:

我们将生成的 xml 文件发送给验证此签名的客户。所有测试都通过了,到目前为止一切正常。

在生产系统中,我们的客户突然发回“数字签名错误”。重新启动应用程序服务器后,一切似乎又正常了,并且客户成功验证了一些文件。但在几分钟/几小时后,客户再次发回“数字签名错误”。只有重新启动应用程序服务器才能暂时解决问题。

我发现是什么导致了这个问题,但我不明白。在应用程序 WSS4J 的某处使用,初始化如下所示(org.apache.ws.security.WSSConfig):

addXMLDsigRI() 在当前提供程序配置 (java.security) 中不存在 ApacheXMLDSig 提供程序时将其添加到位置 2。默认的 XMLDSig jdk 提供程序位于第 8 位。

在 WSS4J 初始化之后,xml 数字签名的创建发生了变化,客户说“数字签名错误”。

当我在位置 2 上手动注册 ApacheXMLDSig 提供程序时,我可以重现客户错误。如果我在位置 10(在 jdk 提供程序之后)添加提供程序,它会再次工作。

版本:

  • xml 安全 1.5.6
  • wss4j 1.6.10
  • jdk1.7.0_13
  • tomcat 7 应用服务器

我明确使用 jdk 提供程序:org.jcp.xml.dsig.internal.dom.XMLDSigRI

为什么 apache 提供程序的注册“破坏”了 jdk 提供程序的功能,我该如何解决这个问题?