keytool -import -alias server -file certs/server.cer -keystore server_trust.keystore -storepass [證書(shū)秘鑰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 [證書(shū)秘鑰0cbe***********************e4372]
===Android使用keystore證書(shū)===
Android不能直接使用java自帶的JKS(sun)生成keystore使用,必須借助BouncyCastle庫(kù)生成BKS险耀,參考http://www.reibang.com/p/9b400e863ce3
JKS和JCEKS是Java密鑰庫(kù)(KeyStore)的兩種比較常見(jiàn)類型,JKS的Provider是SUN累奈,在每個(gè)版本的JDK中都有澎媒。
BKS來(lái)自BouncyCastleProvider戒努,它使用的也是TripleDES來(lái)保護(hù)密鑰庫(kù)中的Key储玫,它能夠防止證書(shū)庫(kù)被不小心修改(Keystore的keyentry改掉1個(gè)bit都會(huì)產(chǎn)生錯(cuò)誤),BKS能夠跟JKS互操作匣椰。
需要配置jdk支持庫(kù)
在%JDK_Home%\jre\lib\security\java.security文件下配置根據(jù):
security.provider.<n>=<className>,則加入Bouncy Castle加密組件的
增進(jìn)BouncyCastleProvider
security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider
最后,需要將bcprov-ext-dk15on-147.jar導(dǎo)入到%JRE_Home%\lib\ext即可
http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html
===線上問(wèn)題解決===
現(xiàn)象:使用bcprov-jdk15on-155.jar版本的bcprov生成的keystore在android系統(tǒng)版本<=4.1時(shí)會(huì)出現(xiàn)Wrong version of key store.錯(cuò)誤齐媒,導(dǎo)致無(wú)法訪問(wèn)服務(wù)器
解決:需要 使用bcprov-jdk15-1.46.jar版本替換bcprov-jdk15on-155.jar版本邀杏,經(jīng)過(guò)降低版本后生成的keystore驗(yàn)證正常
===服務(wù)端生成p12===
openssl pkcs12 -export -clcerts -inkey client/client.key.pem -in certs/client.cer -out certs/client.p12