keytool -import -alias server -file certs/server.cer -keystore server_trust.keystore -storepass [证书秘钥0cbe***********************e4372] -keystore client.keystore -storetype BKS -providername "BC"
keytool -importkeystore -v -srckeystore certs/client.p12 -srcstoretype pkcs12 -srcstorepass [文件秘钥] -destkeystore client.keystore -deststoretype BKS -providername "BC" -deststorepass [证书秘钥0cbe***********************e4372]
===Android使用keystore证书===
Android不能直接使用java自带的JKS(sun)生成keystore使用,必须借助BouncyCastle库生成BKS,参考http://www.jianshu.com/p/9b400e863ce3
JKS和JCEKS是Java密钥库(KeyStore)的两种比较常见类型,JKS的Provider是SUN,在每个版本的JDK中都有。
BKS来自BouncyCastleProvider,它使用的也是TripleDES来保护密钥库中的Key,它能够防止证书库被不小心修改(Keystore的keyentry改掉1个bit都会产生错误),BKS能够跟JKS互操作。
需要配置jdk支持库
在%JDK_Home%\jre\lib\security\java.security文件下配置根据:
security.provider.<n>=<className>,则加入Bouncy Castle加密组件的
增进BouncyCastleProvider
security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider
最后,需要将bcprov-ext-dk15on-147.jar导入到%JRE_Home%\lib\ext即可
http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html
===线上问题解决===
现象:使用bcprov-jdk15on-155.jar版本的bcprov生成的keystore在android系统版本<=4.1时会出现Wrong version of key store.错误,导致无法访问服务器
解决:需要 使用bcprov-jdk15-1.46.jar版本替换bcprov-jdk15on-155.jar版本,经过降低版本后生成的keystore验证正常
===服务端生成p12===
openssl pkcs12 -export -clcerts -inkey client/client.key.pem -in certs/client.cer -out certs/client.p12