JCE cannot authenticate the provider BC

报错原因:

  在使用oracle的JDK时,JAR包必须签署特殊的证书才能使用。(具体是什么协议没查出来,惭愧)

方案一:

  使用openJDK或者非oracle的JDK,这样就可以绕开证书的限制。该方案没实际操作过,还有个方案。

方案二: 

1. 找到 java.security 在jvm安装地方 /path_to_your_jvm/jre/lib/security

2. 添加 security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider

例如:

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

这9不一定非得填9,而是根据上一个security.provider序号往下加一。

3. 添加 bcprov-jdk16-146.jar, bcmail-jdk16.143 到 /path_to_your_jvm/jre/lib/ext (提供maven的地址)

4. 删除其他的 BC library ,没有添加过就pass;

   如果是通过maven添加了依赖,则设置scope范围为:provided

   

  compile,缺省值,适用于所有阶段,会随着项目一起发布。 
  provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。maven打包时,该依赖不会被打包到war或者jar中 
  runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 
  test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。 
  system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

   
JDK 8中的Java Cryptography Extension (JCE) 遇到 "JCE cannot authenticate the provider BC" 错误通常是由于安全证书问题或者缺少必要的加密算法库(如Bouncy Castle Provider, BC)导致的。这个错误意味着Java平台无法识别或验证名为BC的特定安全提供者。 解决这个问题需要按照以下步骤操作: 1. **下载并安装缺失的Provider**: - 访问Bouncy Castle的官方网站(https://www.bouncycastle.org/java.html),下载适合JDK版本的Provider jar文件。 - 将下载的jar文件添加到JDK的`jre/lib/security`目录下。如果该目录不存在,可能需要创建。 2. **注册Provider**: - 打开命令行,使用`keytool`工具来注册新下载的Provider。运行类似下面的命令(替换`path/to/bcprov-jdk15on.jar`为实际路径): ``` keytool -trustcacerts -keystore libsecurity/local_policy.jar -storepass changeit -noprompt -importcert -alias sun.security.provider.BouncyCastleProvider -file path/to/bcprov-jdk15on.jar ``` 然后再运行另一个命令来注册 Unlimited Strength Jurisdiction Policy Provider: ``` keytool -trustcacerts -keystore libsecurity/unlimited强度.jceks -storepass changeit -noprompt -importcert -alias unlimited-strength-jce-policy -file path/to/unlimited强度jce_policy.jar ``` 3. **重启应用或JVM**: 为了使更改生效,你需要重启你的应用程序或者整个JVM。 4. **检查日志**: 如果问题仍然存在,查看Java日志可能会提供更多关于错误的线索。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值