【发布时间】:2011-03-02 12:02:11
【问题描述】:
我对 PKCS7 证券文件有一个大而奇怪的问题。
我创建了一个 p7s 文件,就像http://www.thatsjava.com/java-tech/85019/ 中建议的那样,它创建了文件并仅使用 sun 库对其进行验证。它工作正常。
当我想验证这个文件时,问题就开始了。它返回此异常:
java.security.SignatureException: Signature encoding error
at sun.security.rsa.RSASignature.engineVerify(RSASignature.java:185)
at java.security.Signature$Delegate.engineVerify(Signature.java:1140)
at java.security.Signature.verify(Signature.java:592)
at sun.security.pkcs.SignerInfo.verify(SignerInfo.java:374)
at sun.security.pkcs.PKCS7.verify(PKCS7.java:494)
at sun.security.pkcs.PKCS7.verify(PKCS7.java:511)
at sun.security.pkcs.PKCS7.verify(PKCS7.java:533)
at firma.FirmaDigitalImpl.firmarCadenaSun(FirmaDigitalImpl.java:553)
at firma.FirmaDigitalImpl.firmarCadena(FirmaDigitalImpl.java:249)
at firma.FirmaDigitalImpl.firmarCadena(FirmaDigitalImpl.java:147)
at firma.TestFirma.main(TestFirma.java:75)
Caused by: java.io.IOException: Sequence tag error
at sun.security.util.DerInputStream.getSequence(DerInputStream.java:280)
at sun.security.rsa.RSASignature.decodeSignature(RSASignature.java:209)
at sun.security.rsa.RSASignature.engineVerify(RSASignature.java:174)
... 10 more
但问题并不总是出现,只是使用一种用于签名的证书。我会更好地解释。 我有两个证书(存储在智能卡中),第一个工作正常;我创建了 p7s,接下来我正确验证,但是第二个证书允许我创建 p7s 文件,但是当我验证它时,它返回 SignatureException。我以为p7s文件有问题,但我用别人的应用程序测试过,它看起来是正确的。此外,这个文件发送 throws webservice 并返回它是好的!
如果要了解更多信息,如果 p7s 文件是使用不同工具(.net 和 capicom)和相同证书创建的,那么我可以正确验证。
我已经寻找解决方案,但没有。我在类似情况下发现了相同的异常,但建议的解决方案要么对我不起作用,要么没有出现。
我们将不胜感激任何找到解决方案的建议。
【问题讨论】:
标签: java security validation x509certificate pkcs#7