本文乃博主方便以后忘记可以快速拾起而撰写的,不喜勿喷。
最近公司的项目要用到https请求,负责服务器的同事给了我证书,搞了一天都没成功,老是挂掉。(如果不太清楚可以先搜索下SSL握手)
后来在网上才看到,android不支持jdk默认编译的“JKS”格式,只支持“BKS”、"P12"!博主周末花了一个下午的时间终于生成了“BKS”格式的key。(有图有真相)
首先你必须搭建好JDK运行环境。
一:生成证书
1:创建证书
<span style="white-space:pre"> </span>keytool -genkey -alias "ca" -keyalg "RSA" -keystore "suma.keystore"
ca是密匙对的别名,是公开的
RSA是加密算法,默认是DSA
2.--查看证书
<span style="white-space:pre"> </span>keytool -list -keystore test.keystore
别名ca是可见的
3--导出证书
<span style="white-space:pre"> </span>keytool -export -alias ca -file suma.crt -keystore suma.keystore
4--查看导出的证书
keytool -printcert -file "suma.crt"
后面几种我就不上图了,博主亲测是可以的
--导入证书
keytool -import -keystore suma.keystore -file suma.crt
--删除证书条目
keytool -delete -keystore suma.keystore -alias ca
--修改证书条目,交互式
keytool -keypasswd -alias ca -keystore suma.keystore
--非交互式
keytool -keypasswd -alias ca -keypass 123456 -new 654321 -storepass 123456 -keystore suma.keystore
-------------------重点分割线---------------------
二:转换BKS
前面说了这么多都是为了后面的处理做铺垫
首先BKS类型JDK是不自带的,需要下载bcprov的jar包,可以到官网下载。
1:
接下来把jar包放到C:\Program Files\Java\jdk1.6.0_43\jre\lib\ext
在 jdk_home\jre\lib\security\目录中找到 java.security 在内容增加一行(数字可以自己定义)
security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider
keytool -importcert -keystore suma.bks -file suma.crt -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider
------------如果报org.bouncycastle.jce.provider.BouncyCastleProvider 这个文件找不到的话,就是jar放错位置了
----------------如果死活都不行的话请看方法2
2:
keytool -importcert -v -trustcacerts -file suma.crt -alias ca -keystore suma.bks -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath h:/bcprov-ext-jdk15on-152.jar -storetype BKS -storepass storepass
------------------------分割线----------------------------
博主使用第2种方法做出来的下午,死活都报错,估计环境有点问题,翻阅了大量网页资料,最后使用绝对地址方式做出来。晚上写博文的时候居然第一种也可以成功,也是醉了,白白多弄了几个小时。
到目前位置BKS已经生成好了,这篇就先写到这,下一篇写请求代码