JCE cannot authenticate the provider BC ,has unsign 异常排查解决

2023-10-14 11:36

本文主要是介绍JCE cannot authenticate the provider BC ,has unsign 异常排查解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目场景:

线上项目登录入口发送变化,需要改造用户登录接口,改造接口就要涉及到加解密的操作。

加解密用hutool 工具包来实现的,完成功能后,本地调试验证没什么问题。但后面部署到测试环境的时候就出问题了。


问题描述

异常信息如下:

at org.apache.catalina,core.StandardHostValve.invoke(StandardHostValve,java:143)
at org.apache,catalina.valves.ErrorReportValve,invoke(ErrorReportValve.java:92)
at org.apache.catalina.core,StandardEngineValve,invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter,service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor,iava:374)
at org.apache,coyote,AbstractProcessorLight,process(AbstractProcessorLight,java:65)
at org.apache.coyote,AbstractProtocol$ConnectionHandler,process(AbstractProtocol,java:888
at org.apache.tomcat,util,net.NioEndpoint$SocketProcessor,doRun(NioEndpoint.java:1597
at org,apache.tomcat,util,net.SocketProcessorBase,run(SocketProcessorBase.java:49)
at java,util.concurrent,ThreadPoolExecutor,runlorker(ThreadPoolExecutor.java:1149
at java.util.concurrent.ThreadPoolExecutorsWorker,run(ThreadPoolExecutor,java:624
at org.apache.tomcat.util,threads ,TaskThread$wrappingRunnable, run(TaskThread,java:61)
at java.lang.Thread.run(Thread .java:748)
caused by: java.lang.SecurityException: JCE cannot authenticate the provider BC
at javax.crypto.Cipher.getInstance(Cipher,java:656)at cn.hutool.crypto.Secureutil.createCipher(SecureUtil.java:985)
caused by:java.util.jar.JarException:jar:file:/home/xx/xx/xxx-xx-1.0.0,jar!/B00T-INF/lib/xxxx-api-1.0.0.jar!/ has unsign xx/xx/message/api/config/xx.class
at iavax.crypto.JarVerifverifySingleJar(JarVerifier.java:502)
at javax.crypto.JarVerifier.verifyJars(JarVerifier.java:363)
at javax.crypto.JarVerifier.verify(JarVerifier.java:289)
at javax.crypto.JceSecurityverifyProviderJar(JceSecurity.iava:164)

原因分析:

排查思路:

1、是不是maven没有把hutool包打到jar包里面。  然后使用 jad反编译jar,去lib文件找一下 有没有打进去。

        验证结果。 hutool已经打进去了。

2、百度一下异常问题,网上说是 jre环境中缺少 bcprov-jdk15on-1.57.jar 影响到的。

         但我去本地的jre环境里面找了,没有这个包,但也可以正常运行。有可能是本地环境这个包的依赖。

        测试环境验证,下载 bcprov-jdk15on-1.57.jar,我是通过maven的方式下载下来的。放到按照网上说的路径 \jdk1.8.0_131\jre\lib\ext。 重启项目服务,问题解决。

              


解决方案:

1、将bcprov-jdk15on-1.57.jar上传到服务器上,找到安装jdk的文件目录,然后按这个路径\jdk1.8.0_131\jre\lib\ext ,把jar包放进去即可。

2、网上有说,还需要添加配置信息(实操验证,不用加配置)

在jdk中,\jdk1.8.0_131\jre\lib\security目录下的,在文件“java.security” 添加如下: 
security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider  

 security.provider.10是按 实际配置信息顺序 累加1 来定的


 

这篇关于JCE cannot authenticate the provider BC ,has unsign 异常排查解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/210232

相关文章

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

Goland debug失效详细解决步骤(合集)

《Golanddebug失效详细解决步骤(合集)》今天用Goland开发时,打断点,以debug方式运行,发现程序并没有断住,程序跳过了断点,直接运行结束,网上搜寻了大量文章,最后得以解决,特此在这... 目录Bug:Goland debug失效详细解决步骤【合集】情况一:Go或Goland架构不对情况二:

解决jupyterLab打开后出现Config option `template_path`not recognized by `ExporterCollapsibleHeadings`问题

《解决jupyterLab打开后出现Configoption`template_path`notrecognizedby`ExporterCollapsibleHeadings`问题》在Ju... 目录jupyterLab打开后出现“templandroidate_path”相关问题这是 tensorflo

如何解决Pycharm编辑内容时有光标的问题

《如何解决Pycharm编辑内容时有光标的问题》文章介绍了如何在PyCharm中配置VimEmulator插件,包括检查插件是否已安装、下载插件以及安装IdeaVim插件的步骤... 目录Pycharm编辑内容时有光标1.如果Vim Emulator前面有对勾2.www.chinasem.cn如果tools工

Java多线程父线程向子线程传值问题及解决

《Java多线程父线程向子线程传值问题及解决》文章总结了5种解决父子之间数据传递困扰的解决方案,包括ThreadLocal+TaskDecorator、UserUtils、CustomTaskDeco... 目录1 背景2 ThreadLocal+TaskDecorator3 RequestContextH

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误