JCE cannot authenticate the provider BC

调试过程中报错:java.lang.SecurityException: JCE cannot authenticate the provider BC 

   这个问题百度是解决不了的,是google解决的,google里面有一篇解释很清楚完整的博客,原文地址:http://download.csdn.net/detail/tomliguocai/3945936

   膜拜大神

   以下是具体的解决方法:

   1. 在java下找到  jre/lib/security/java.security,添加一行代码:

       security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider   //这里的9,视具体情况而定,你可能是是10,11...

   2.添加2个扩展包到jre/lib/ext目录下:bcprov-jdk15-135.jar     bcprov-jdk16-143.jar

   3.把你的class path中的有的BC的扩展包都删除(这步我没有用到,因为class path里面没有这个)

经过这些处理以后,终于看到了乖乖的加密后的密文和数字签名,哈哈哈,happy~


But if You change server from JBoss to other (for example Glassfish) You have the same problem.
The better solition for me are changes in jdk.
You shoud add Bouncy Castle to security providers on Your java platform in two steps:
1. Copy BC librarys (currently bcpkix-jdk15on-149.jar, bcprov-jdk15on-149.jar) to directory $JAVA_HOME/jre/lib/ext/
2.
Register BC provider: edit file $JAVA_HOME/jre/lib/security/java.security and under line

security.provider.1=sun.security.provider.Sun

add Your BC provider

security.provider.2=org.bouncycastle.jce.provider.BouncyCastleProvider

Change numbers of rest providers. The whole block of providers should be similar to:

security.provider.1=sun.security.provider.Sun
security.provider.2=org.bouncycastle.jce.provider.BouncyCastleProvider
security.provider.3=sun.security.rsa.SunRsaSign
security.provider.4=sun.security.ec.SunEC
security.provider.5=com.sun.net.ssl.internal.ssl.Provider
security.provider.6=com.sun.crypto.provider.SunJCE
security.provider.7=sun.security.jgss.SunProvider
security.provider.8=com.sun.security.sasl.Provider
security.provider.9=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.10=sun.security.smartcardio.SunPCSC

And now You must just restart the java server.


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值