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。

最后测试通过,开心。

时间: 2024-10-29 19:06:45

JCE cannot authenticate the provider BC的相关文章

java.lang.SecurityException: JCE cannot authenticate the provider BC

和X公司对接数据,他们的开发语言是java,我们是php,双方数据通信的时候采用的加密方法是:bouncycastle 由于这个时间大神的限制,我们暂时不用PHP开发自己的加密算法,而是采用对方已有的加密包. 具体思路是: 1.将java写的的加密方法封装成jar包: 2.然后在php里面直接调用:exec("java -jar encrypt.jar")系统命令执行,实现加密解密 这里主要遇到2个问题: 1.cannot load mian class 2.调试过程中报错:java.

java.lang.SecurityException:JCE cannot authenticate the provider BC

出现:java.lang.SecurityException:JCE cannot authenticate the provider BC 2种方法:修改jdk的提供者: 在jdk/jre/lib/sercurity/java.security 增加 security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider 导入bcprov-jdk15-145.jar

linux上java解加密(AES/CBC)异常:java.lang.SecurityException: JCE cannot authenticate the provider BC办法

用mapreduce做数据清洗的时候,需要对数据进行解密,加密方法是:AES/CBC/PKCS7Padding,由于java本身不支持,需要添加依赖,用的依赖是: 1 <dependency> 2 <groupId>org.bouncycastle</groupId> 3 <artifactId>bcprov-jdk15on</artifactId> 4 <version>1.56</version> 5 </dep

java.security.NoSuchProviderException: no such provider: BC 的问题解决

第一种方式 1.修改以下两个文件 %JDK_Home%\jre\lib\security\java.security %JRE_Home%\jre\lib\security\java.security 追加 最后一行 security.provider.1=sun.security.provider.Sunsecurity.provider.2=sun.security.rsa.SunRsaSignsecurity.provider.3=sun.security.ec.SunECsecurity

EJBCA在Linux上的安装

在windows上安装为了测试用,装在linux服务器上的因为CN用的ip需要重装.....又是折腾一番,下面介绍一些需要注意的地方 一.所需文件 准备的内容就不说了,参考我的上上篇<EJBCA在windows上的安装>,需要下载的上面提供的有 二.准备条件 1.jboss配置 1.1.JBOSS端口号配置 作为服务器JBOSS的默认端口8080和8009肯定被占用了,修改jboss的端口号.由于JBOSS的版本不同所以修改的位置也不一样 JBOSS-5.1.0GA 修改的位置是:jboss-

EJBCA 在windows上的安装

为了做EJBCA的封装测试,在我自己电脑上装了个,但是在国内的开发上面的介绍实在是太少,有的也只是些傻瓜式的安装介绍,这是介绍在Windows上安装的过程,(后面介绍下 linux 红帽上的),有些也是在网上看看,有一些比较关键的地方 在下面会指出来: 推荐一个比较不错的网址:https://sourceforge.net/p/ejbca/discussion/ EJBCA Installation EJBCA是一个基于J2EE技术的全功能的开源CA系统软件,并提供了一个强大的.高性能并基于组件

我的java web登录RSA加密

之前一直没关注过web应用登录密码加密的问题,这两天用appscan扫描应用,最严重的问题就是这个了,提示我明文发送密码.这个的确很不安全,以前也大概想过,但是没有具体研究过,都不了了之,这次借这个机会,终于搞定了这个问题. 首先,有不少帖子说在客户端用js对密码进行md5摘要,然后提交给登录处理的url.这种做法无非是自欺欺人,就算别人抓包抓不到你原始密码,用这个md5后的密码一样可以模拟登录系统,无非稍微安全了一点点,也就是直接通过登录页没法直接输入用户名密码来登录,但是人家的手段你知道有啥

【转】 Java 进行 RSA 加解密时不得不考虑到的那些事儿

[转] Java 进行 RSA 加解密时不得不考虑到的那些事儿 1. 加密的系统不要具备解密的功能,否则 RSA 可能不太合适 公钥加密,私钥解密.加密的系统和解密的系统分开部署,加密的系统不应该同时具备解密的功能,这样即使黑客攻破了加密系统,他拿到的也只是一堆无法破解的密文数据.否则的话,你就要考虑你的场景是否有必要用 RSA 了. 2. 可以通过修改生成密钥的长度来调整密文长度 生成密文的长度等于密钥长度.密钥长度越大,生成密文的长度也就越大,加密的速度也就越慢,而密文也就越难被破解掉.著名

Java 进行 RSA 加解密时不得不考虑到的那些事儿

1. 加密的系统不要具备解密的功能,否则 RSA 可能不太合适 公钥加密,私钥解密.加密的系统和解密的系统分开部署,加密的系统不应该同时具备解密的功能,这样即使黑客攻破了加密系统,他拿到的也只是一堆无法破解的密文数据.否则的话,你就要考虑你的场景是否有必要用 RSA 了. 2. 可以通过修改生成密钥的长度来调整密文长度 生成密文的长度等于密钥长度.密钥长度越大,生成密文的长度也就越大,加密的速度也就越慢,而密文也就越难被破解掉.著名的"安全和效率总是一把双刃剑"定律,在这里展现的淋漓尽