xmlsec无法验证签名
我试图用xmlsec1实用程序验证
XML(附在问题的底部)签名.但是,在执行命令时
xmlsec1 --verify test.xml 我正在跟踪堆栈跟踪:
基于堆栈跟踪,我认为ID有问题.经过一番挖掘,我发现了执行 xmlsec1 --verify --id-attr:ID "urn:oasis:names:tc:SAML:2.0:protocol:Response" test.xml 产生以下堆栈跟踪
这是test.xml文件的修剪内容: <saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" Destination="http://localhost/login" ID="uuid-73c06e86-88d2-4204-91f4-3d484bc782cc" InResponseTo="_bbaf45ef713be7a8c8701e41118ec2278cbf32828f" IssueInstant="2016-02-29T14:16:31.142Z" Version="2.0"> <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">idp-name</saml2:Issuer> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> <ds:Reference URI="#uuid-73c06e86-88d2-4204-91f4-3d484bc782cc"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <ds:DigestValue>H9ffPJ6/jq25p13BcziR0hNLkGg=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>FegjeG..pJEQ==</ds:SignatureValue> <ds:KeyInfo> <ds:X509Data> <ds:X509Certificate>MIIFIj..mV7A==</ds:X509Certificate> </ds:X509Data> <ds:X509Data> <ds:X509Certificate>MIIFDj..5uLcw=</ds:X509Certificate> </ds:X509Data> <ds:X509Data> <ds:X509Certificate>MIIE/z..3IDhA=</ds:X509Certificate> </ds:X509Data> <ds:X509Data> <ds:X509Certificate>MIIEkT..h5/WrQ8</ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </ds:Signature> <saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" ID="uuid-201bfc86-e7d7-4dca-bdb5-2263b2d27c22" IssueInstant="2016-02-29T14:16:01.175Z" Version="2.0"> <saml2:Issuer>idp-name</saml2:Issuer> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> <ds:Reference URI="#uuid-201bfc86-e7d7-4dca-bdb5-2263b2d27c22"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <ds:DigestValue>EJzD3pVZwkvFkh8IX0xyF7tmP2k=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>b3ONeh..zOEw==</ds:SignatureValue> <ds:KeyInfo> <ds:X509Data> <ds:X509Certificate>MIIFIj..mV7A==</ds:X509Certificate> </ds:X509Data> <ds:X509Data> <ds:X509Certificate>MIIFDj..5uLcw=</ds:X509Certificate> </ds:X509Data> <ds:X509Data> <ds:X509Certificate>MIIE/z..3IDhA=</ds:X509Certificate> </ds:X509Data> <ds:X509Data> <ds:X509Certificate>MIIEkT..5/WrQ8</ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </ds:Signature> </saml2:Assertion> </saml2p:Response> 你能解释一下我在这里做错了什么吗?如何使用xmlsec验证签名的XML文件? 解决方法
我找到了一种正确的方法来验证这一点,所以这里是如何:
首先,必须指定ID属性: xmlsec1 –verify –id-attr:ID 对我的XML文件执行此命令导致错误无效数据:数据和摘要不匹配. 我一直在针对格式化XML的SAML Tracer(Firefox插件)返回的输出调用此命令 – 这会更改签名,因此xmlsec1会输出错误. 对原始(解密)内容调用xmlsec1工作正常. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |