问题标签 [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 回答
4648 浏览

php - 哪个是正确的 XML 专有规范化?

我正在使用xmlseclibs尝试签署 SOAP 文档,但它似乎并没有以相同的方式规范化事物,具体取决于我是在签名还是验证。

我给你举个例子。这是我要签名的 XML:

我得到了一些在 PHP 中工作的代码,以使用公钥和私钥证书的组合对其进行签名,它似乎可以工作。它为<ds:Signature>元素添加了所有适当的东西,看起来很棒。但后来我在签名后立即尝试验证它,再次使用 xmlseclibs(和公钥证书)对其进行了测试,但验证失败。因此,完全相同的代码库正在执行签名和验证,但是由于某种原因这两个进程不同意。

我向 xmlseclibs 添加了一些调试代码以了解它在做什么,并且我意识到它提供的签名密钥和提供的验证密钥不同的原因是因为它在两种情况下对事物进行了不同的规范化。当我告诉它签署<samlp:Response>元素时,这是它签署的规范形式(为了便于阅读,我在此处添加了换行符):

但是,当它验证签名时,这是它计算验证的规范形式(再次,我在这里添加了换行符):

如您所见,这个版本省略了元素中的xmlns:saml属性<samlp:Response>,而第一个版本没有。(请注意,这与xmlns:samlp属性不同,后者包含在两者中。)这看起来很明显就像 xmlseclibs 中的一个错误,但尽管如此,如果我知道哪种规范形式是正确的,我很乐意自己修复它. 是否应该通过排他规范化省略该属性?还是应该包括在内?哪一种是正确的排他规范形式?

0 投票
7 回答
23818 浏览

xml - 如何将 XML RSA 密钥转换为 PEM 文件?

我有两个 XML 文件,结构如下:

我的钥匙

公钥

我正在使用xmlseclibsRobert Richards 的库,它需要密钥的 .PEM 表示来加密和解密事物。

作为一个加密新手,我不知道从哪里开始,粗略的谷歌搜索并没有发现任何特别明显的东西......

谢谢!

0 投票
1 回答
1073 浏览

xml - 使用密钥和证书签署 XML

我想签署我的 xml 文件,以便我提供给他们的人可以确定他们没有被篡改,并且我保证这些是我的 XML 文件。我正在使用 xmlseclib(似乎可以工作的 php)。我有一些问题希望你能帮我回答:

  1. 在库中,我发送了一个私有 RSA 密钥和一个证书。我应该如何处理证书?如果我使用为我的 https 服务器购买的证书,它的有效期仅为 1 年?我希望我签署的文件永远有效。我应该生成自己的证书吗?我如何在openssl中做到这一点?

  2. 有人可以给我概述一下 ds:SignatureValue、ds:DigestValue 和 ds:X509Certificate 的内容以及它们的使用方式吗?

我的自动添加标签:

谢谢

0 投票
2 回答
903 浏览

php - 使用 PHP 在 SAML 2.0 中进行 DSA 签名检查

我已经检查过 SO 并四处搜索,但到目前为止还没有找到答案。我使用 SAML 2.0 作为服务提供商,并嵌入了php-saml - 首先使用了 simplesamlphp,但发现嵌入起来有点困难。

IdP-s 响应带有签名

看起来 xmlseclibs 不支持 dsa 签名。

问题 A:有什么建议可以用来验证 dsa 签名吗?

问题 B:只是好奇其他人为 SAML 使用什么库。我刚刚在 simplesamlphp 上花了大约 20 分钟,发现它完全依赖于它自己的 URL 结构并且是一个适当的网络服务器端点,而不仅仅是一个库。

干杯

0 投票
0 回答
1705 浏览

php - 带有 smlseclibs 的 XML 签名返回无效数据:数据和摘要不匹配

我正在尝试提交一个签名的 XML 文档(使用xmlseclibs),但签名本身就是错误的。

我正在使用的代码如下所示:

并且正在发送 xml,这很好,但是当我恢复 xml 文件并检查签名时:http ://www.aleksey.com/xmlsec/xmldsig-verifier.html

我得到的错误是:

func=xmlSecOpenSSLEvpDigestVerify:file=digests.c:line=229:obj=sha1:subj=unknown:error=12:invalid data:data and digest do not match

我试图将证书转换为单独的私钥和公钥、相同的文件、不同的文件、导入和导出等。

流程是这样的:

Java 程序将生成的未签名的 Base64 编码的 XML 发送到 PHP 文件,PHP 文件对其进行签名和发送SoapClient,结果被打印,然后由 Java 程序捕获和解释,从而避免在使用该系统的机器上拥有单独的证书。

0 投票
2 回答
1270 浏览

php - Verifying windows 8 purchases (receipts) using PHP

I need to verify in-app purchases made in Windows 8 applications server-side using PHP. MSDN's documentation page has an example only in C#. Right now I've spent a whole day by searching for a way to do it in PHP. No success. All over the internet there are only .NET examples on this topic.

I've found some partial information about signed XML and x509, some libraries (xmlseclibs - useless, uses openssl_* functions which do not support sha256; phpseclib - looks promising but their documentation and examples are poor with no help).

Is it possible to do it somehow without learning everything about signed XML, RSA and x509? Right now I've read almost everything but everywhere is info only about encoding. Nothing about verifying.

0 投票
0 回答
75 浏览

php - 在 PHP 中验证 Windows Phone 8 应用内购买

在过去的两天里,我一直在研究如何在 PHP 中验证 WP8 应用内购买。在没有找到任何样本后,我找到了名为“xmlseclibs”的库。虽然他们的示例签名 XML 运行良好,但它似乎总是无法在 validateReference 验证 Microsoft 收据,其中计算的摘要与 Microsoft XML 响应中的摘要不匹配。

我发现了一个关于同一主题的问题,但似乎从未得到解决: Verifying windows 8 purchase (receipts) using PHP

有没有人对这个话题有任何经验?我真的很感激。

0 投票
2 回答
1896 浏览

php - HEREDOC 和 DOMDocument 之间的 XML 签名差异

我开发的一个 API 客户端使用 XML 消息,并且消息根据XML 签名语法和处理规范进行签名。经过长时间的努力,我终于让签名工作了。

目前,我正在使用 HEREDOC(简单的 php 字符串)构建 XML 并进行清理,我想直接使用 DOMDocument 创建 XML。但是,这会导致消息被服务器无效。

这是当前设置(服务器在签名时接受此消息):

这是 OO 方法(签名时服务器拒绝此消息):

什么会导致服务器使 XML 签名无效?签署消息的代码完全相同。服务器只是报告“无效的电子签名”。

如果需要,我可以显示更多代码。

编辑,生成的 XML 的更多输出和比较

为了提供更多信息,这是第一个 (HEREDOC) xml 的输出,通过以下方式生成$document->saveXml()

这是$document->saveXML()第二个(直接 DOMDocument 生成)方法的输出 ( ):

在 php 中,var_dump()给出完全相同的字符串长度。如果我比较两个字符串(===显然)它们是相同的。比较两个对象,那么它们是一样的。

签名示例

使用此代码使用库xmlseclibs进行签名(注意。两种类型的签名方式相同!):

如果我在签名后转储 XML,则<DigestValue><SignatureValue>值不同。所以服务器正确的,签名是无效的,但我想不出方法 A 有效而 B 无效的线索。

0 投票
1 回答
1894 浏览

php - 使用 xmlseclibs 在 php 中签名 xml 会给出错误的签名

我使用 xmlseclibs v.1.3.1

这是我尝试签署我的xml的方法

它总是给我“失败!!!!!!!!!” 结果。

0 投票
1 回答
2825 浏览

php - PHP 签名 SAML 文档

我正在做一个项目,基本上已经到了我不知道该怎么做才能走得更远的地步。

尝试与供应商合作以使用 SAML 设置 SSO 流程。目前,我们手动执行此过程,因为我们没有像 SimpleSAMLPHP 那样实现的解决方案。

为了测试这个过程,我们将 SimpleSAMLPHP 设置为服务提供者。这在我们的测试阶段提供了很大的帮助,但我们目前遇到了这个错误:

这是我们发送给我们的 SP 的 SAML 请求,以查看我们是否可以进行身份​​验证。

现在,在为代码格式化时,我错误地在其中添加了几个额外的空格。

我正在使用此 PHP 库对 SAML 文件进行签名:https ://code.google.com/p/xmlseclibs/并使用以下代码:

我会说,如果我没有这一行的最后一部分

具体来说, array('force_uri' => true,'uri_context'=>$encHash1),服务提供商看到了文件并成功验证了我的请求。

关于如何创建此文件以发送的任何建议?我们不想将 SimpleSAMLPHP 实现为我们的登录,因为这将需要更改整个登录过程,我们已经在夏季进行了更改以与 CAS 集成。

编辑以阐明我所做的更改如何使其发挥作用。

当我告诉它摆脱引用 URI 部分时,它摆脱了这个:URI="#llgkdlffdpoobdkjfkgjcabphgifgfgbammdibjm"并且不再指向已签名文档的特定部分。所以我觉得要么整个文档都被签名了,要么签名只是添加到文档中,而 SimpleSAMLPHP 只是忽略了签名。

编辑2:我忘了更新这个,我最终找到了这个代码: http: //michaelseiler.net/2013/08/23/cas-and-google-sso-integration/这真的帮助了我,我能够做到2次尝试后我想要什么。