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

来源:互联网 发布:js运算符type of 编辑:程序博客网 时间:2024/04/29 00:53

在做Android通过https访问tomcat时,需要做keystore证书,在使用命令:

 keytool -import -alias tomcat -file server.cer -keystore server_trust.keystore -storepass 123456 -storetype BKS -providername "BC"

时,遇到了下面这个错误:

java.security.NoSuchProviderException: no such provider: BC

上网搜了一下,说是要下载一个叫 bcprov-jdk15-135.jar 的包,放在JAVA_HOME/jre/lib/ext目录下,然后修改JAVA_HOME/jre/lib/security/java.security文件,在里面可以看到有几行是以“security.provider.”开头的,在它的最后序号之上加一行,如我的最后的序号是8,加入以下这行:

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

然后保存,一般来说,这样就可以解决了,但当我做完这一步后,天杀的还是不行,仍然报java.security.NoSuchProviderException: no such provider: BC这个错误,于是继续Google,网上很多人的解决方案都是这样,无意中看到一条说是要注意你的JAVA SDK的版本是否是你刚刚存放 bcprov-jdk15-135.jar包的那个SDK,我恍然大悟,马上用命令查看:

ls -l /usr/bin/java

果然,这里链接的是另一个SDK版本的路径,不是我刚刚存放 bcprov-jdk15-135.jar包的那个SDK,于是我将它rm掉,重做一个链接,用命令:

ln -s /opt/jdk/bin/java  /usr/bin/java (第一个路径参数是我存放 bcprov-jdk15-135.jar包的那个SDK)

做好之后,再试,还是报java.security.NoSuchProviderException: no such provider: BC错误,沮丧。。

重新看了一下生成keystore的命令,看到了,是keytool!!那个keytool的链接还没换过来,于是再做链接,并且将之前生成的证书删除掉,用新的keytool重新生成一遍

终于,终于....成功了!

我内牛满面 T - T

原创粉丝点击