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


    项目场景:

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

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


    问题描述

    异常信息如下:

    1. at org.apache.catalina,core.StandardHostValve.invoke(StandardHostValve,java:143)
    2. at org.apache,catalina.valves.ErrorReportValve,invoke(ErrorReportValve.java:92)
    3. at org.apache.catalina.core,StandardEngineValve,invoke(StandardEngineValve.java:78)
    4. at org.apache.catalina.connector.CoyoteAdapter,service(CoyoteAdapter.java:343)
    5. at org.apache.coyote.http11.Http11Processor.service(Http11Processor,iava:374)
    6. at org.apache,coyote,AbstractProcessorLight,process(AbstractProcessorLight,java:65)
    7. at org.apache.coyote,AbstractProtocol$ConnectionHandler,process(AbstractProtocol,java:888
    8. at org.apache.tomcat,util,net.NioEndpoint$SocketProcessor,doRun(NioEndpoint.java:1597
    9. at org,apache.tomcat,util,net.SocketProcessorBase,run(SocketProcessorBase.java:49)
    10. at java,util.concurrent,ThreadPoolExecutor,runlorker(ThreadPoolExecutor.java:1149
    11. at java.util.concurrent.ThreadPoolExecutorsWorker,run(ThreadPoolExecutor,java:624
    12. at org.apache.tomcat.util,threads ,TaskThread$wrappingRunnable, run(TaskThread,java:61)
    13. at java.lang.Thread.run(Thread .java:748)
    14. caused by: java.lang.SecurityException: JCE cannot authenticate the provider BC
    15. at javax.crypto.Cipher.getInstance(Cipher,java:656)at cn.hutool.crypto.Secureutil.createCipher(SecureUtil.java:985)
    16. 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
    17. at iavax.crypto.JarVerifverifySingleJar(JarVerifier.java:502)
    18. at javax.crypto.JarVerifier.verifyJars(JarVerifier.java:363)
    19. at javax.crypto.JarVerifier.verify(JarVerifier.java:289)
    20. 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 来定的


     

  • 相关阅读:
    【Linux】可重入VS线程安全
    像你这么优秀的测试工程师,为什么连面试都过不了?
    Vue3-Vue3生命周期、自定义hook函数、toRef与toRefs、其他组合式API、组合式API的优势、Vue3新的组件和功能
    数据结构 B树 B+树 B*树 特性与规则说明 图解
    salesforce零基础学习(一百三十二)Flow新功能: Custom Error
    Python Opencv实践 - 凸包检测(ConvexHull)
    最全自学黑客技术学习路线~这也泰酷辣
    Java培训:现实世界中的原生Java
    【C++项目实现】俄罗斯方块
    ArrayList集合中元素的排序
  • 原文地址:https://blog.csdn.net/qq_41814311/article/details/133810964