使用okhttp框架 单向认证
鉴于技术或者框架的不断更新,网上介绍的Android客户端访问自签名证书的网站的博客很多已无法使用,故本博文将详细介绍一下Android SSL/TLS HTTPS请求。
开发环境:
JDK 1.8
Tomcat 8.0
IDE: Android Studio 2.3.3
1.1 生成自签名证书
- 生成server端证书库
keytool -genkey -alias server -keyalg RSA -storetype PKCS12 -keysize 2048 -keystore E:/ssl/server.p12 -validity 3650 -storepass 123456 -keypass 123456
C:\Users\liting.wang>keytool -genkey -alias server -keyalg RSA -storetype PKCS12-keysize 2048 -keystore E:/ssl/server.p12 -validity 3650 -storepass 123456 -keypass 123456
您的名字与姓氏是什么?
[Unknown]: Liting Wang
您的组织单位名称是什么?
[Unknown]: Onroad
您的组织名称是什么?
[Unknown]: Onroad
您所在的城市或区域名称是什么?
[Unknown]: Xiamen
您所在的省/市/自治区名称是什么?
[Unknown]: Fujian
该单位的双字母国家/地区代码是什么?
[Unknown]: CN
CN=Liting Wang, OU=Onroad, O=Onroad, L=Xiamen, ST=Fujian, C=CN是否正确?
[否]: y
填入各类信息,也可以放空,最后输入y, 即可在E:/ssl/目录下生成server.p12证书库
当然了,如果你觉得一个个的输入比较麻烦,也可以用命令行的方式表达,如下
keytool -genkey -alias server -keyalg RSA -storetype PKCS12 -keysize 2048 -keystore E:/ssl/server.p12 -dname "CN=Liting Wang,OU=onroad,O=onroad,L=Xiamen,ST=Fujian,c=cn" -validity 3650 -storepass 123456 -keypass 123456
解释:
-genkey:生成key
-alias:别名,独一无二,通常不区分大小写
-keyalg: 指定密钥的算法(如 RSA, DSA(如果不指定默认采用DSA))
-storetype:指定密钥仓库类型,无指定默认为JKS,但oracle建议使用PKCS12
-keysize :指定证书大小
-keystore:指定密钥库的名称,可指定路径,例如:E:/ssl/ 需要注意的是运行该命令之前需要先创建好该目录。
-validity:证书的有效期,单位:天。
- 利用Server.p12来签发证书
keytool -export -alias server -file E:/ssl/server.cer -keystore E:/ssl/server.p12 -storepass 123456
生成的server.cer证书是给客户端使用的。
1.2 Tomcat 配置
找到Tomcat安装目录的tomcat 8.0/conf/下找到server.xml配置文件,并以文本形式打开

本文详细介绍了在Android应用中使用okhttp框架实现HTTPS单向认证的过程,包括自签名证书的生成、Tomcat服务器配置以及Android端的代码实现。通过设置信任自签名证书,解决因未验证的证书导致的安全问题。
最低0.47元/天 解锁文章
2443

被折叠的 条评论
为什么被折叠?



