因为为了安全起见,推送用上了TLS,但是看了几篇文章对于证书的概念还没搞清楚,还把android签名打包用的keystore跟证书的keystore搞混了。
keystore
android正式打包的时候,我们都知道要有一个签名文件,这个签名文件只用来app打包
刚开始我查了TLS,发现代码里面有一段加载keystore的,混乱在此发生
在想这个keystore是不是签名打包的文件啊,但是直接当做文件放在raw里面,那不是人人都可以拿到。就开始纠结了,查了查,终于找到一篇文件解析清楚:
http://blog.csdn.net/lmj623565791/article/details/48129405
还有:
http://frank-zhu.github.io/android/2014/12/26/android-https-ssl/
搞清楚了几点:
1、android正式打包时的签名,只用来打包用;
2、双向认证时
(1)服务器端生成一个签名文件 server.jks
keytool -genkey -alias eveo_server -keyalg RSA -keystore server.jks -validity 3600 -storepass eveoserverpassword
(2)客户端生成一个签名文件 client.jks,并且用这个签名文件 client.kjs 生成(签发)一个证书 client.cer
第一步: keytool -genkey -alias eveo_client -keyalg RSA -keystore client.jks -validity 3600 -storepass eveoclientpassword
第二步:keytool -export -alias eveo_client -file client.cer -keystore client.jks -storepass eveoclientpassword
(3)把客户端的证书client.cer交到服务器人员手上,服务器人员把client.cer添加到server.jks里面
keytool -import -alias eveo_client -file client.cer -keystore sever.jks
(4)android端还要把client.jks转为bks格式,把转换后的文件client.bks拷贝到目录raw下,代码加载即可