前言:
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
而默认情况下,java利用的是TLS和JKS密库,而android则使用规定的BKS密库。
1.生成服务端JKS秘钥与证书指令
-
keytool -genkey -keystore server.jks -storepass 密码 -keyalg RSA -keypass 密码
服务器导出证书server.crt
-
keytool -exportcert -keystore server.jks -storepass 密码 -file server.crt
2.生成客户端BKS秘钥与证书
在这之前,因为Android 要求要BC证书,而Java的keytool本身不提供BKS格式,因此要自己手动配置。
2.1需要到Bouncy Castle的官网去下载对应JDK的包
http://www.bouncycastle.org/latest_releases.html
我这里用的是bcprov-jdk15on-146.jar。
2.2配置bcprov
把下载的bcprov包放到jdk_home\jre\lib\ext目录下
在 jdk_home\jre\lib\security\目录中找到 java.security 在内容增加一行(数字可以自己定义)
security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider
客户端指令:
- keytool -genkey -keystore client.bks -storepass 密码 -keyalg RSA -keypass 密码 -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider
- keytool -exportcert -keystore client.bks -storepass 密码 -storetype BKS -file client.crt -provider org.bouncycastle.jce.provider.BouncyCastleProvider
最后把各自证书导入到信任库
- keytool -import -keystore tserver.bks -storetype BKS -storepass 密码 -file server.crt
- keytool -import -keystore tclient.jks -store