微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 JAVA 验证 XML 电子签名 - 失败

如何解决使用 JAVA 验证 XML 电子签名 - 失败

我们正在尝试使用 JAVA 验证两个人使用 XADES“共同签名”的两个 XML 文件

  1. 首先,我们创建使用 XADES-XL 签名的原始 XML 文件

  2. 如果我们验证这个签名的 XML,Java 验证工作正常。

  3. 然后这个(仅由一个人)签名的 XML 文件由第二个系统使用第二个证书签名,但使用 XADES-BES。

  4. 当我们尝试验证这个由两个证书签名两次的 XML 文件时,就会出现验证错误

这是我们在日志中得到的:

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="id-20176132e7fc7996186825d888c1e245"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:CanonicalizationMethod><ds:Signature$
5+SSBlpKbCkxNr95VPiuKXRfzdr79jUzRdub1WqEcP33wGGjM7jkijmisj83dyGm5CumV3ULj3xa
1tmxICBl8/sz209o0e5xGvKGks0A/wtjfx7UHR
2021-02-02 09:42:07 DEBUG [http-nio-8080-exec-1] internal: Pre-digested input:
2021-02-02 09:42:07 DEBUG [http-nio-8080-exec-1] internal: XGUkIy3TtHQY8kyBTct6keLwUGsbhRQ13e7UZe
Sty1PSFctAYmke5ap4s4cQI881AgAw+xybMOl1SIypYA+j5NndjJv0Vjhc7IK6V7cLzifF2RqFBr
wKBTEuN7EXx5yDd81iF1AbiNU74Xjtv1uZCKPt0=</ds:Modulus><ds:Exponent>AQAB</ds:Exponent></ds:RSAkeyvalue></ds:keyvalue></ds:KeyInfo><ds:Object><xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Target="#id-20176132e7fc7996186825d888c1e245"><xades:SignedProperties Id="xades-id-20176132e7fc7996186825d888c1e245"><xades:SignedSignatureProperties><xades:SigningTime>2021-01-27T08:52:09Z</xades:SigningTime><xades:SigningCertificate><xades:Cert>
<xades:CertDigest><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod><ds:DigestValue>2mksooevK91Meei8a4JFEm6TV6A=</ds:DigestValue></xades:CertDigest><xades:IssuerSerial><ds:X509IssuerName>C=ES,O=ACCV,OU=PKIACCV,CN=ACCVCATEST-120</ds:X509IssuerName><ds:X509SerialNumber>3355782527402877539580550263211431104</ds:X509SerialNumber></xades:IssuerSerial></xades:Cert></xades:SigningCertificate><xades:SignatureProductionPlace>
</xades:SignatureProductionPlace></xades:SignedSignatureProperties><xades:SignedDataObjectProperties><xades:DataObjectFormat ObjectReference="#fe-004cc8e1-136f-4f86-8176-332140833af3"><xades:MimeType>application/octet-stream
</xades:MimeType></xades:DataObjectFormat></xades:SignedDataObjectProperties></xades:SignedProperties></xades:QualifyingProperties></ds:Object></ds:Signature>
2021-02-02 09:42:07 DEBUG [http-nio-8080-exec-1] dom: Expected digest: NmZyy9ACFJOKkMKCpzrPPTJ9T+U=
2021-02-02 09:42:07 DEBUG [http-nio-8080-exec-1] dom: Actual digest: mIwwNVfcGd4Icxq/8E0U9JqCLKo=
2021-02-02 09:42:07 DEBUG [http-nio-8080-exec-1] dom: Reference[] is valid: false
2021-02-02 09:42:07 DEBUG [http-nio-8080-exec-1] dom: Couldn't validate the References
2021-02-02 09:42:07 ERROR [http-nio-8080-exec-1] XmlValidationServiceImpl: Signature Failed core validation
2021-02-02 09:42:07 ERROR [http-nio-8080-exec-1] XmlValidationServiceImpl: signature validation status: true
2021-02-02 09:42:07 ERROR [http-nio-8080-exec-1] XmlValidationServiceImpl: ref[0] validity status: true
2021-02-02 09:42:07 ERROR [http-nio-8080-exec-1] XmlValidationServiceImpl: ref[1] validity status: true
2021-02-02 09:42:07 ERROR [http-nio-8080-exec-1] XmlValidationServiceImpl: ref[2] validity status: false

我们真正不明白的是这句话到底是什么意思:

XmlValidationServiceImpl:ref[2] 有效性状态:false

我的意思是,它告诉我们什么,或者我们必须从哪里开始寻找以尝试确定导致验证失败的原因?

有什么想法吗?

非常感谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。