... signer information does not match signer information of other classes in the same package

编程入门 行业动态 更新时间:2024-10-25 01:26:36

踩过的坑,记录一下

背景: 对接第三方接口,采用sm2加密方式,对调用方传过来的参数进行解密。引入所需的解密jar包和所依赖的日志jar,然后断点调试,断点走过几个节点验签正常,解密就报下面的错误。看报错信息感觉是jar冲突了,在war包中翻遍依赖的jar也没看到重名的。
       在网上搜索大部分说是jar包不完整,可我这个包是刚从第三方那边要过了的,不至于给我的不完整的包吧!
       找了半天终于开始有头绪了,既然是cfca.sadk.bouncycastle.util.Arrays在相似的包中签名不一样,那就存在两个路径和文件名一样的文件。首先先把引入的jar注释–>在一个java文件中import cfca.sadk.bouncycastle.util.Arrays;更新maven索引–>点击文件名进入class中,即找到了这个冲突文件所在的jar。
       对比了即将引入的jar中确实也存在 cfca.sadk.bouncycastle.util.Arrays的文件,且内容都是一样的(不知道谁cp谁的)。问题虽然找到了,但是两个文件都在第三方jar中,也是不好处理啊,毕竟没有源码无法自己修改重新打个jar。
       最后的处理办法是最新的jar正常引入,打war包后,放进tomcat启动前删除之前含有冲突文件的jar,再启动,测试接口正常。
        注: 此种解决方式有局限性,这个错误是发生在运行时,编译时正常,运行前删掉冲突jar,tomcat启动时加载就不会冲突;且上个jar是另一个客户接口所依赖的jar和当前客户无关,故可以采用删除jar的方式。

851001: encoding required DERSequence encoding
java.lang.SecurityException: class "cfca.sadk.bouncycastle.util.Arrays"'s signer information does not match signer information of other classes in the same package
	at cfca.sadk.x509.certificate.X509Cert.certFrom(X509Cert.java:970)
	at cfca.sadk.x509.certificate.X509Cert.certFrom(X509Cert.java:924)
	at cfca.sadk.x509.certificate.X509Cert.<init>(X509Cert.java:152)
	at com.cib.yypt.frontendbasic.gm.a.a(B64CfcaUtil.java:54)
	... 6 more
Caused by: 851001: encoding required DERSequence encoding
java.lang.SecurityException: class "cfca.sadk.bouncycastle.util.Arrays"'s signer information does not match signer information of other classes in the same package
	at cfca.sadk.asn1.parser.ASN1Parser.getDERSequenceFrom(ASN1Parser.java:150)
	at cfca.sadk.x509.certificate.X509Cert.certFrom(X509Cert.java:965)
	... 9 more
Caused by: java.lang.SecurityException: class "cfca.sadk.bouncycastle.util.Arrays"'s signer information does not match signer information of other classes in the same package
	at java.lang.ClassLoader.checkCerts(ClassLoader.java:898)
	at java.lang.ClassLoader.preDefineClass(ClassLoader.java:668)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:761)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

更多推荐

... signer information does not match signer information of other classes in the

本文发布于:2023-06-13 10:01:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1378328.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:information   signer   match   package   classes

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!