问题标签 [xmlseclibs]

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 投票
2 回答
3761 浏览

php - 有没有 xmlseclibs 的文档?

我已经签署了 XML,但我不知道如何在签名中包含 KeyValue 元素。拥有一些文档将节省大量时间。

下面的代码(如果你有兴趣的话)是我到目前为止用 xmlseclibs 做的事情:

XML 字符串

创建 XML 对象(用于签名)

使用 xmlseclibs 创建签名对象

试图关闭不起作用的 ds: 前缀

访问必要的关键数据

签署 XML 对象

添加公钥

将封装签名附加到 XML 对象

将签名的 XML 代码保存到文件

另外也想从这个库:

  1. 了解官方和可信赖的存储库,以确保库没有损坏。
  2. 关闭“ds:”前缀(因为我生成的 XML 的示例和文档均不包含此类前缀)。
  3. Base64 类型值中的每 X 个字符换行。
  4. 完全缩进(否则根本没有)。

我从此处输入链接描述中获得了库

提前致谢。

0 投票
1 回答
2950 浏览

php - XML Signature DigestValue is invalid

I am trying to sign XML file with PHP and xmlseclibs. However all validation tools say that my signature is invalid. XMLSpy says: "The calculated digest value doesn't match the digest of reference"

This is my XML:

This is the digest I get:

Methods I used to get it:

1.) PHP:

2.) OpenSSL:

3.) This website: http://hash.online-convert.com/sha1-generator

This is the digest that XMLSpy somehow gets and that works:

How do I get this digest?

0 投票
0 回答
1578 浏览

php - 使用 PHP 将 WSSE 标头添加到 XML

我目前正在开发一个 WS 客户端,该客户端需要在将其请求发送到服务器之前对其进行签名。为此,我有一个私钥和一个证书,但我正在努力处理安全标头。输出 XML 的预期结构应该是这样的:

我尝试使用 xmlseclibs,但我不知道如何包含所有必需的信息,因为这些示例相当基本。

我想我可以采用 DIY 方式并手动构建标头,但我希望尽可能简单。

有什么线索吗?

附加信息

我目前正在使用 SoapClient 来完成这项任务。问题是,我不知道该怎么做。我发送的 XML 需要对其内容进行签名,我已经手动完成了(使用 c14n 函数并计算其摘要 ..)。但是,为了对整个身体做同样的事情,我需要访问原始 XML(我想),所以我认为这行不通。

我没有尝试手动创建 SOAP 标头,因为我试图避免任何黑客攻击。我正在寻找既易于实施又易于工作的东西。

我的代码目前看起来像这样(将其保持在最低限度以提高可读性):

xml变量包含我知道是正确的 XML 代码。它已经在 SoapUI(我必须提供我的密钥和密码)和我的提供商提供的在线测试服务上进行了测试。这意味着发送的数据是 100% 正确的。

但是,我的 PHP 代码以“内部错误”告终。我假设这与缺乏证书等有关。我不确定是否有办法从响应中获取更多信息,但没有关于所述错误的文档。

我一直在玩弄几种格式的选项和密钥库、私钥和证书,但没有得到任何积极的结果。我认为这一切都与没有发送正确的标题有关。

非常感谢。

0 投票
1 回答
1759 浏览

php - SAML 的正确 XML 规范化

我在验证 SAML 2.0 断言 XML 的签名时遇到了问题。我正在使用来自 simpleSAMLphp 项目的 SAML2 库,而该项目又使用 PHPxmlseclibs库来签署 XML 并验证签名。

我收到来自我的合作伙伴的以下断言:

签名元素请求独占 C14N 规范化。库库将其xmlseclibs规范化如下:

然而,我的伴侣实际签署的元素是:

几乎相同,但是没有xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"命名空间。命名空间在xsi签名 Transform 元素中提到:<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default saml ds xs xsi"/></Transform>

由于签名中的 SHA1 摘要与在元素上计算的摘要 xmlseclibs 不匹配,因此 SAML 身份验证失败。

所以我想知道这里谁是正确的——是否必须包含 xsi 命名空间(即使此命名空间中没有元素),因为它包含在 InclusiveNamespaces 中,或者如果不是,为什么在xmlseclibs其中包含该命名空间C14N 规范化?

0 投票
2 回答
524 浏览

mcrypt - simplesamlphp 失败,因为 mcrypt 库在 Linux 7 中不可用

我们正在尝试simplesamlphp在 RedHat Linux 7 上作为 SP 运行。代码失败并出现 HP 致命错误:

调用未定义的函数 mcrypt_module_open()。

simplesamlphp使用xmlseclibs 1.3.1,而后者又使用mcrypt,并且mcrypt在 RedHat Linux 7 上不受支持。有没有人找到解决这个问题的方法?这是xmlseclibs不使用mcrypt的版本,还是simplesamlphp不使用的版本xmlseclibs

0 投票
1 回答
907 浏览

php - php - xmlseclibs 无法签署我想要的节点

我已经签署与工作相关的 xml 快一年了,今天我发现我做错了(请原谅我的英语不好,这不是我的主要语言)

我为 php 使用 xmlseclibs 库,我希望签名是这样的:

以下示例应该可以帮助我演示我想要做什么。我们有以下 xml 文件:

在我签名后,看起来像这样:

现在,这就是我需要的结构,但是,当我这样做时,符号将应用于所有文档(节点 1 和节点 2),但我只想签署节点 2(这是我得到的错误,感谢 DigestValue,我注意到了)。

但是当我这样做时,我得到了以下信息:

我已经尝试了好几天,但我无法将签名放在我想要的位置(就在已签名的标签下方,而不是在里面)。

有什么想法吗?

我正在使用的功能是这样的:

有人知道该怎么做吗?

0 投票
1 回答
2236 浏览

linux - 致命错误:xmlsec/xmlsec.h:没有这样的文件或目录

我有一个makefile如下:

这会引发编译错误xmlsec/xmlsec.h: No such file or directory

我已经下载了 xmlsec1 和 libxmlsec1 包,但错误仍然存​​在。不出所料,文件夹下仍然没有 xmlsec 目录/usr/include/。有人可以帮我解决我缺少的相关包裹吗?

0 投票
1 回答
528 浏览

php - 如何签署复杂的 XML 文档?

我是 XML 和电子签名世界的新手。我正在尝试使用xmlseclibs库签署 XML 文档。

也许有人在签署更复杂的文件时遇到过这种方法。在我的 XML 文档中,我的这个标签没有任何价值,因此我必须在此部分中签署文档:

并使用此代码签署生成的文档:

PHP

结果

如您所见,签名出现在文档的末尾,但我需要的是在上述标签中生成签名。有人遇到过这种不便吗?

0 投票
1 回答
906 浏览

php - 如何使用证书发送 SOAP 数字签名消息

我想使用证书签署 XML 文档。它应该看起来像:

我尝试使用 XMLSecLibs,但不幸的是它不能很好地工作。首先,我不知道如何使用该工具添加包容性命名空间,也许这是正确签名的关键?我还尝试通过更改对上述模板的引用来复制摘要值和签名值,但它不起作用(我从 SOAP 服务器收到消息:“验证消息时遇到安全错误原因:签名或解密无效”)。

有一些丑陋的代码试图签名:

有人可以帮我吗?也许只缺少一个包含命名空间?我指望你,因为我没有想法..

此致

0 投票
1 回答
46 浏览

php - 如何将签名添加到 XMLdocument 中的特定位置?

我有 XML 文档:

我尝试这样做:

在错误位置使用 Singnature 的输出是:

我想将签名节点放在 ISSUER 和 ARTIFACT 之间。这个位置对于正确发送 SOAP Envelope 非常重要。有可能的?