android 客户端bks,Keytools Https双向认证(Android通用)

Https认证:

单向认证:保证服务器是可信任的,可以安全的访问的!

客户端拿到服务器的证书,通过CA认证信任,然后取出公钥,加密对称密钥传给服务器,服务器用自己的私钥解密得到对称密钥,后续使用该对称密钥加解密数据!

双向认证:客户端和服务器都是可以互相信任的!

客户端向服务器发送一个请求时,服务器会把自己的证书,以及一些信息发送过来,客户端拿到服务器的证书通过CA进行验证,如果是可靠的,继续进行,如果不是可靠的,则会弹出警告,告诉客户端证书有风险。同样服务器也也要验证客户端的证书,如果没有通过验证,拒绝连接,如果两端都通过验证,则可以进行正常通信,使用对方的公钥加密对称密钥,实现安全通信!

##使用 keytool工具生成管理证书

// 生成服务器证书server.keystore

keytool.exe -genkey -v -alias server -keyalg RSA -keystore D:\home\server.keystore -validity 36500 -ext SAN=ip:192.168.1.1

// 生成客户端证书client.p12 证书格式PKCS12

keytool.exe -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore D:\home\client.p12 -validity 36500

// 导出客户端证书client.cer

keytool.exe -export -alias client -keystore D:\home\client.p12 -storetype PKCS12 -rfc -file D:\home\client.cer

// 导出服务器证书server.cer

keytool.exe -keystore D:\home\server.keystore -export -alias server -file D:\home\server.cer -validity 36500

// 添加客户端证书为服务器的信任认知

keytool -import -v -file D:\home\client.cer -keystore D:\home\server.keystore

//查看证书 信任列表

keytool -list -keystore D:\home\server.keystore

//删除信任证书

keytool -delete -alias mykey -keystore server.keystore -storepass hz123456

实际操作步骤

1.导入生成客户端的P12到xshell

2.通过命令生成client.cer

keytool -export -alias client -keystore client.p12 -storetype PKCS12 -rfc -file client.cer

3.加入客户端证书到服务器信任列表(server.keystore的密码是ab123456)

keytool -import -v -file client.cer -keystore server.keystore

4.查看服务器证书列表

keytool -list -keystore server.keystore

5.配置tomcat,支持双向验证(/usr/tomcat/apache-tomcat-7.0.68)

编辑tomcat服务器的配置,让其支持双向验证

vim server.xml

maxThreads="150" SSLEnabled="true" scheme="https" secure="true" URIEncoding="UTF-8"

keystoreFile="server.keystore" keystorePass="hz123456"

truststoreFile="server.keystore" truststorePass="hz123456"

clientAuth="true" sslProtocol="TLS" />

6.关闭tomcat进程

ps aux|grep tomcat

查看tomcat进程, kill 1111

7.重启进程

进入bin目录 ./startup.sh

Android P12 BKS

Android的客户端证书是BKS格式的,所以需要将P12格式的证书转换成BKS格式,步骤如下:

1.使用portecle工具转换:

[下载链接(http://portecle.sourceforge.net/)](http://portecle.sourceforge.net/)

2.命令行打开工具:

java -jar portecle.jar

3.转换BKS

974d8181948278d71c580624341ae57d.png

621f4ca2340f86c8fccc60b985907daf.png

互相信任

1.客户端信任服务器:

如果是浏览器,将服务器的证书双击,配置导入

75b84af9a6500d4f9495adc2f6c7ca2b.png

如果是Android客户端,只需要将服务器cer证书文件放入assert目录,相应解析处理,大家可以百度!

2.服务器信任客户端:

如果是浏览器,可以将客户端是证书加入到服务器的信任证书列表

如果是客户端,将bks证书放到assert目录,解析传到服务器!具体Android端怎么读取bks证书传给服务器的,大家可以下去研究一下!

注意:坑

1.生成证书的时候,要指定ip

keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore client.p12 -validity 36500

注意:first last name需要指定如下

-ext SAN=ip:xxx.xxx.xxx.xxx

2.P12 BKS 转换的时候密码过长,报错

java.security.KeyStoreException: java.io.IOException: Error initialising store of key store: java.security.InvalidKeyException: Illegal key size

是国外对技术出口的限制,限定了密钥的长度,需要替换jdk里面的两个文件(jre\lib\security):local_policy.jar,US_export_policy.jar,要下载jdk版本对应的,不然会出错!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值