问题标签 [xmlsec]
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.
soap - 将 X509Data 保留在 SecurityTokenReference 中
我需要在 java 中对 SOAP Body XML 内容进行数字签名,并决定使用 Apache Santuario 库来实现它。以下库正在使用中。
生成的 SOAP 标头应包含 KeyInfo 和以下安全元素。
但是这个 api 允许我只在 KeyInfo 下设置 X509Data 部分,而不是直接在 SecurityTokenReference 内。
请帮助我如何实现相同的目标。
问候,
文卡特拉姆
c - 出现运行时错误:使用 XmlSec 静态库时出现 9 个未实现的功能错误
我面临一个运行时错误"CryptoAppInit:error=9:feauter is not implemented: Crypto initialization failed while using XmlSec static library.
,我在 Ubuntu(Linux) 上使用 Qt creator 创建了 xmlsec 静态库。其他依赖库也像(libxml,openssl)一样是静态的。由于我的安全项目的代码完整性检查,我需要有静态库。你能帮我解决这个问题吗?
libxml2 - 设置程序以使用 LIBXML_PARSEHUGE
我正在使用命令行应用程序 xmlsec 来加密和解密文件。我得到了一个节点大小为 40 MB 的 XML 文件。我已经发现我需要设置
解析大于 10 MB 的节点
有谁知道如何启用此功能?我在 xmlsec 的源代码中搜索 Parser init,但找不到集成选项的方法 我必须在源代码中设置它并重新编译吗?如果是这样,我是否必须重新编译 libxml 或 xmlsec?
osx-elcapitan - el capitan 上的 xmlsec
我正在尝试xmlsec
在 El Capitan 上安装,但我无法这样做。
我正在按照此页面上的说明进行操作:
https://github.com/concordusapps/python-xmlsec
当我这样做时,pip install xmlsec
我得到:
当我下载源代码并手动执行时,我得到:
有什么我想念的吗?
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 提供程序的功能,我该如何解决这个问题?
xml - xmlsec 无法验证签名
我正在尝试使用 xmlsec1 实用程序验证 XML(附加在问题的底部)签名。但是,在执行命令时
我得到以下堆栈跟踪:
func=xmlSecXPathDataExecute:file=xpath.c:line=273:obj=unknown:subj=xmlXPtrEval:error=5:libxml2 库函数失败:expr=xpointer(id('uuid-73c06e86-88d2-4204-91f4-3d484bc782cc' )) func=xmlSecXPathDataListExecute:file=xpath.c:line=373:obj=unknown:subj=xmlSecXPathDataExecute:error=1:xmlsec 库函数失败:func=xmlSecTransformXPathExecute:file=xpath.c:line=483:obj=xpointer :subj=xmlSecXPathDataExecute:error=1:xmlsec 库函数失败:func=xmlSecTransformDefaultPushXml:file=transforms.c:line=2411:obj=xpointer:subj=xmlSecTransformExecute:error=1:xmlsec 库函数失败:func=xmlSecTransformCtxXmlExecute:file =transforms.c:line=1242:obj=unknown:subj=xmlSecTransformPushXml:error=1:xmlsec 库函数失败:transform=xpointer func=xmlSecTransformCtxExecute:file=transforms.c:line=1302:obj=unknown:subj=xmlSecTransformCtxXmlExecute:error=1:xmlsec 库函数失败:func=xmlSecDSigReferenceCtxProcessNode:file=xmldsig.c:line=1589:obj=unknown:subj=xmlSecTransformCtxExecute:error=1:xmlsec 库函数失败:func=xmlSecDSigCtxProcessSignedInfoNode:file= xmldsig.c:line=822:obj=unknown:subj=xmlSecDSigReferenceCtxProcessNode:error=1:xmlsec 库函数失败:node=Reference func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=563:obj=unknown:subj=xmlSecDSigCtxProcessSignedInfoNode: error=1:xmlsec 库函数失败:func=xmlSecDSigCtxVerify:file=xmldsig.c:line=382:obj=unknown:subj=xmlSecDSigCtxSignatureProcessNode:error=1:xmlsec 库函数失败:错误:签名失败 ERROR SignedInfo References (ok/ all):0/1 清单参考(ok/all):0/0 错误:无法验证文件“test.xml”```````````````error=1:xmlsec 库函数失败:func=xmlSecDSigReferenceCtxProcessNode:file=xmldsig.c:line=1589:obj=unknown:subj=xmlSecTransformCtxExecute:error=1:xmlsec 库函数失败:func=xmlSecDSigCtxProcessSignedInfoNode:file=xmldsig.c: line=822:obj=unknown:subj=xmlSecDSigReferenceCtxProcessNode:error=1:xmlsec 库函数失败:node=Reference func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=563:obj=unknown:subj=xmlSecDSigCtxProcessSignedInfoNode:error=1: xmlsec 库函数失败:func=xmlSecDSigCtxVerify:file=xmldsig.c:line=382:obj=unknown:subj=xmlSecDSigCtxSignatureProcessNode:error=1:xmlsec 库函数失败:错误:签名失败 ERROR SignedInfo References (ok/all): 0 /1 清单参考(ok/all):0/0 错误:无法验证文件“test.xml”```error=1:xmlsec 库函数失败:func=xmlSecDSigReferenceCtxProcessNode:file=xmldsig.c:line=1589:obj=unknown:subj=xmlSecTransformCtxExecute:error=1:xmlsec 库函数失败:func=xmlSecDSigCtxProcessSignedInfoNode:file=xmldsig.c: line=822:obj=unknown:subj=xmlSecDSigReferenceCtxProcessNode:error=1:xmlsec 库函数失败:node=Reference func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=563:obj=unknown:subj=xmlSecDSigCtxProcessSignedInfoNode:error=1: xmlsec 库函数失败:func=xmlSecDSigCtxVerify:file=xmldsig.c:line=382:obj=unknown:subj=xmlSecDSigCtxSignatureProcessNode:error=1:xmlsec 库函数失败:错误:签名失败 ERROR SignedInfo References (ok/all): 0 /1 清单参考(ok/all):0/0 错误:无法验证文件“test.xml”```xmlsec 库函数失败:func=xmlSecDSigReferenceCtxProcessNode:file=xmldsig.c:line=1589:obj=unknown:subj=xmlSecTransformCtxExecute:error=1:xmlsec 库函数失败:func=xmlSecDSigCtxProcessSignedInfoNode:file=xmldsig.c:line=822: obj=unknown:subj=xmlSecDSigReferenceCtxProcessNode:error=1:xmlsec library function failed:node=Reference func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=563:obj=unknown:subj=xmlSecDSigCtxProcessSignedInfoNode:error=1:xmlsec library function failed : func=xmlSecDSigCtxVerify:file=xmldsig.c:line=382:obj=unknown:subj=xmlSecDSigCtxSignatureProcessNode:error=1:xmlsec library function failed: Error: signature failed ERROR SignedInfo References (ok/all): 0/1 Manifests References (ok/all):0/0 错误:无法验证文件“test.xml”```xmlsec 库函数失败:func=xmlSecDSigReferenceCtxProcessNode:file=xmldsig.c:line=1589:obj=unknown:subj=xmlSecTransformCtxExecute:error=1:xmlsec 库函数失败:func=xmlSecDSigCtxProcessSignedInfoNode:file=xmldsig.c:line=822: obj=unknown:subj=xmlSecDSigReferenceCtxProcessNode:error=1:xmlsec library function failed:node=Reference func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=563:obj=unknown:subj=xmlSecDSigCtxProcessSignedInfoNode:error=1:xmlsec library function failed : func=xmlSecDSigCtxVerify:file=xmldsig.c:line=382:obj=unknown:subj=xmlSecDSigCtxSignatureProcessNode:error=1:xmlsec library function failed: Error: signature failed ERROR SignedInfo References (ok/all): 0/1 Manifests References (ok/all):0/0 错误:无法验证文件“test.xml”```file=xmldsig.c:line=1589:obj=unknown:subj=xmlSecTransformCtxExecute:error=1:xmlsec 库函数失败:func=xmlSecDSigCtxProcessSignedInfoNode:file=xmldsig.c:line=822:obj=unknown:subj=xmlSecDSigReferenceCtxProcessNode:error =1:xmlsec 库函数失败:node=参考 func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=563:obj=unknown:subj=xmlSecDSigCtxProcessSignedInfoNode:error=1:xmlsec 库函数失败:func=xmlSecDSigCtxVerify:file=xmldsig。 c:line=382:obj=unknown:subj=xmlSecDSigCtxSignatureProcessNode:error=1:xmlsec 库函数失败:错误:签名失败错误 SignedInfo 引用(ok/all):0/1 Manifests References(ok/all):0/0错误:无法验证文件“test.xml”```file=xmldsig.c:line=1589:obj=unknown:subj=xmlSecTransformCtxExecute:error=1:xmlsec 库函数失败:func=xmlSecDSigCtxProcessSignedInfoNode:file=xmldsig.c:line=822:obj=unknown:subj=xmlSecDSigReferenceCtxProcessNode:error =1:xmlsec 库函数失败:node=参考 func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=563:obj=unknown:subj=xmlSecDSigCtxProcessSignedInfoNode:error=1:xmlsec 库函数失败:func=xmlSecDSigCtxVerify:file=xmldsig。 c:line=382:obj=unknown:subj=xmlSecDSigCtxSignatureProcessNode:error=1:xmlsec 库函数失败:错误:签名失败错误 SignedInfo 引用(ok/all):0/1 Manifests References(ok/all):0/0错误:无法验证文件“test.xml”```func=xmlSecDSigCtxProcessSignedInfoNode:file=xmldsig.c:line=822:obj=unknown:subj=xmlSecDSigReferenceCtxProcessNode:error=1:xmlsec 库函数失败:node=参考 func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=563:obj=未知:subj=xmlSecDSigCtxProcessSignedInfoNode:error=1:xmlsec 库函数失败:func=xmlSecDSigCtxVerify:file=xmldsig.c:line=382:obj=unknown:subj=xmlSecDSigCtxSignatureProcessNode:error=1:xmlsec 库函数失败:错误:签名失败错误 SignedInfo 引用(ok/all):0/1 清单引用(ok/all):0/0 错误:无法验证文件“test.xml”```func=xmlSecDSigCtxProcessSignedInfoNode:file=xmldsig.c:line=822:obj=unknown:subj=xmlSecDSigReferenceCtxProcessNode:error=1:xmlsec 库函数失败:node=参考 func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=563:obj=未知:subj=xmlSecDSigCtxProcessSignedInfoNode:error=1:xmlsec 库函数失败:func=xmlSecDSigCtxVerify:file=xmldsig.c:line=382:obj=unknown:subj=xmlSecDSigCtxSignatureProcessNode:error=1:xmlsec 库函数失败:错误:签名失败错误 SignedInfo 引用(ok/all):0/1 清单引用(ok/all):0/0 错误:无法验证文件“test.xml”```line=563:obj=unknown:subj=xmlSecDSigCtxProcessSignedInfoNode:error=1:xmlsec 库函数失败:func=xmlSecDSigCtxVerify:file=xmldsig.c:line=382:obj=unknown:subj=xmlSecDSigCtxSignatureProcessNode:error=1:xmlsec 库函数失败:错误:签名失败错误 SignedInfo 引用(ok/all):0/1 清单引用(ok/all):0/0 错误:无法验证文件“test.xml”```line=563:obj=unknown:subj=xmlSecDSigCtxProcessSignedInfoNode:error=1:xmlsec 库函数失败:func=xmlSecDSigCtxVerify:file=xmldsig.c:line=382:obj=unknown:subj=xmlSecDSigCtxSignatureProcessNode:error=1:xmlsec 库函数失败:错误:签名失败错误 SignedInfo 引用(ok/all):0/1 清单引用(ok/all):0/0 错误:无法验证文件“test.xml”```
根据堆栈跟踪,我认为 ID 有问题。经过一番挖掘,我发现执行
产生以下堆栈跟踪
func=xmlSecOpenSSLEvpDigestVerify:file=digests.c:line=249:obj=sha1:subj=unknown:error=12:invalid data:data 和 digest 不匹配 FAIL SignedInfo References (ok/all): 0/1 Manifests References ( ok/all):0/0 错误:无法验证文件“test.xml”
这是文件的修剪内容test.xml
:
你能解释一下我在这里做错了什么吗?如何使用 xmlsec 验证签名的 XML 文件?
ruby-on-rails - Signer Gem 和 XMLSEC 格式 - 在 xml 中添加模数和指数
我正在尝试使用签名者获取 xmlsec 格式,但我无法创建它。我正在尝试创建这种格式:
https://gist.github.com/patojimenez/84d22500611620b8b3bebea30243108a
有没有人使用过这种格式?我尝试使用单一格式:
但是格式很不一样,只返回X509Data标签信息。我需要KeyValue标签信息。
我该怎么做呢?
java - Websphere:公共类加载器中的共享库比应用程序模块更早,即使使用父级最后策略
背景:我有以下问题:我有几个 WAR 文件需要部署在同一个 Websphere 服务器上。WAR 文件使用的库依赖于将特定版本的 XMLSec 注册为 XML 签名提供者(使用 Java 安全类)。目前我将这个库与每个 WAR 文件捆绑在一起(因为 WAR 文件也需要独立工作,并且在 Tomcat 上没有任何特殊的共享库配置等)。每个 WAR 文件在 ServerContextListener 中使用 Security.addProvider() 注册提供程序。但这会导致多 WAR 设置出现问题,因为如果一个 WAR 文件使用 Security.addProvider 进行注册,而另一个 WAR 文件尝试使用 XMLSignatureFactory 类(实际上是 XMLSec JAR 中包含的 javax.* 类)来获取它本身,但它最终回调到使用 Security.addProvider 配置的全局提供程序列表),然后它会在 XMLSignatureFactory 中导致 ClassCastException,因为这个类将它从 Security 获取的内容转换为它自己的提供程序类版本,这不会不工作。确切的堆栈跟踪如下:
引起:java.lang.ClassCastException:org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignatureFactory 与 javax.xml.crypto.dsig.XMLSignatureFactory 在 javax.xml.crypto.dsig.XMLSignatureFactory.findInstance(XMLSignatureFactory. java:202) 在 javax.xml.crypto.dsig.XMLSignatureFactory.getInstance(XMLSignatureFactory.java:292)
顺便说一句,这不是与正在运行的不同版本的 XMLSec 冲突或与 Websphere 自己的版本发生冲突的情况。只有一个版本,尽管它是从不同的 WAR 加载的。
当然,解决方案是使用通用类加载器加载 xmlsec 库,这样所有 WAR 文件都可以看到加载的类的一个版本,这将避免 ClassCastExceptions 等。但问题是:我还需要有每个应用程序都加载了“最后一个父”策略——或者更确切地说,我需要每个应用程序中的 JAR 文件优先于 Websphere 的内置版本的库(例如我也包含在 WAR 文件中的 Axis2 等)。此外,我希望我可以将 xmlsec 库保存在每个 WAR 文件的 WEB-INF/lib 文件夹中,以便 WAR 文件仍然可以独立工作(即在其他可能没有配置共享库的环境中等)。 )。
所以基本上我想要一个通用的类加载器来加载 XMLSec 库,比如说,从磁盘的某个地方。让我们表示[SHARED XMLSEC]。然后我希望每个应用程序类路径最终看起来像这样:
App1:[SHARED XMLSEC][App1 WEB-inf/lib][Websphere 库][JDK 库]
App2:[SHARED XMLSEC][App2 WEB-inf/lib][Websphere 库][JDK 库]
等等
在这样的配置中,App1+App2 本身是否包含 XMLSec 库并不重要,因为共享的将优先,因此它们将使用公共的。同时,App1+App2 仍然可以自由覆盖其他内置的 Websphere 库(Axis2)。
是否可以实现此配置以及我需要设置哪些选项?您是否看到实现相同目标的替代方法?
web-services - SOAP 主体的 XML 签名
我正在为一个需要soap:body 签名的WS 实现一个客户端。该应用程序是用 Go 编写的,所以我宁愿避免链接到 C。
最大的问题是:如何计算SHA256?摘要算法的输入应该是什么?我假设 "/CJj9686ARgbV/YmDrr+1yhcaJuXu022cADK/M8efQs=" 是后来签名的 SHA256 结果。我尝试了许多规范化 XML 的变体,但没有一个会产生这个哈希值。
这是正确 SOAP 消息的示例
python - SAML-xmlsec1 验证
我用 xmlsec 命令签署了我的 saml 响应 xml:
这是我的 XML:
但是在使用此命令验证相同的签名 saml xml 时:
我得到这个:
我想将 SAML 与 Google 一起用作 Google 作为 SP。