我们确实不是很强大的人,但是我们也有存在的价值的!人生呐,并不是只有输和赢两种的啊!你也有着,只有你才能做的事情的啊! ——热血高校2
为什么要把jks转为bks?
因为:Java平台默认识别jks格式的证书文件,但是android平台只识别bks格式的证书文件。
这段文字来自鸿洋大神的文章,想了解的可以看这里
怎么转?
有人说鸿洋大神写得那么明白,那你为什么还要多费口舌写这篇文章?
因为我按照鸿洋大神的步骤踩了许多坑。
第一步:
去Portecle下载Download portecle-1.9.zip (3.4 MB)。
第二步:
鸿洋大神的文章是这样写的:
解压后,里面包含bcprov.jar文件,使用jave -jar bcprov.jar即可打开GUI界面。
然而,并不是这样,正确的做法应该是:
打开portecle.jar文件,而不是bcprov.jar
坑来了
好了,到了这一步,你按照洋神的gif图开始转化,如果你的签名文件很小,那么可以顺利转化,但是,你有可能遇到这种情况:
java.security.KeyStoreException:java.io.IOException:Error initialising store of key store:
java.security.invalidKeyException:lllegal key size
这种情况也很简单,
解决办法是下载JCE然后替换掉JDK\jre\lib\security和JRE\lib\security这两个目录下的同名文件,并重启Portecle
上面这个解决方法来自这里,有兴趣可以自行查阅,但是有一点需要特别注意
JDK\jre\lib\security\policy和JRE\lib\security\policy这两个目录下,都有两个文件夹,limited和unlimited,这两个文件夹下的文件都需要被上面下载的JCE解压后的文件替换。
这样就不会再出现上面的那个错误了。
为什么会出现这种情况?
原因:
Illegal key size or default parameters 是指密钥长度受限制,
java运行时环境读到的是受限的policy文件。
policy文件位于${java_home}/jre/lib/security 目录下。
这种限制是因为美国对软件出口的控制。
上面这句话来自这里
福利?
这篇文章的作者提供了一个不错的工具类,可以很方便进行单向认证和双向认证。
本人水平有限,如有错误,欢迎指出。