java使用的证书库格式是jks。但是我们要在安卓使用证书库(同样的java接口),那么必须使用bks。java管理证书库的工具是keytool,制作bks也是使用这个工具,不过默认它不支持bks,需要下载对应提供者(Provider)才能操作。
这个扩展参数在keytool里面有说明:
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
我们要用keytool生成其它类别的证书库,一方面要指定-storetype,然后提供该类别的库文件(-providerpath)和入口类(-providerclass)。之后,其它操作和命令跟管理jks一样。
bks支持库的官网是:
https://www.bouncycastle.org/latest_releases.html
不过我下载失败,所以我是到中央仓库查询获取的。这是我目前查询到的地址:
https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on
选择最新版本,获得依赖地址并通过mvn或gradle等方式拉取下来。我这里上传当前最新的版本,这是我使用的:
链接:https://pan.baidu.com/s/1aqrltvLUvwmJw8JrcAZN2A
提取码:keba
这里给一下keytool使用例子,其实上面已经说明,就是在原有参数基础上增加类别和提供者(上面下载的支持库配置到路径参数里):
keytool -genkeypair -keystore 1.bks -storetype BKS -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath .\bcprov-jdk15on-1.64.jar
keytool -list -keystore 1.bks -storetype BKS -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath .\bcprov-jdk15on-1.64.jar