android https——okhttp实现https请求

定义:
HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer
中文含义为“超文本传输协议在安全加密字层”
简单来说就是加密数据传输和安全连接。https和http有什么区别
在HTTP的之下加入了SSL (Secure Socket Layer),安全的基础就靠SSL。
SSL位于TCP/IP和HTTP协议之间

https与http的区别:

●https更安全

HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

●https需要申请证书

https协议需要到ca申请证书,一般免费证书很少,需要交费,费用大概与.COM域名差不多,每年需要交大约几十元的费用。而常见的http协议则没有这一项;

●端口不同

http使用的是大家最常见的80端口,而https连接使用的是443端口;

●状态不同

http的连接很简单,是无状态的。而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全

google官方推荐的android网络请求框架okhttp已经集成了https的使用方法,我们只需要按照api去调用即可。

使用okhttp实现https请求

首先要搞清楚https的请求需要什么,可以从上面描述中看出,我们需要一份ca证书。
购买的证书,格式为.pfx,带有公钥和私钥,附带一个密码。还有一种格式为.cer的证书,这种证书是没有私钥的。
服务器会将证书配置到tomcat中,客户端则存放在本地,app启动的时候加载进去。

.pfx格式和.cer格式的区别:

1.带有私钥的证书
  由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以pfx作为证书文件后缀名。
  
2.二进制编码的证书
  证书中没有私钥,DER 编码二进制格式的证书文件,以cer作为证书文件后缀名。

3.Base64编码的证书
证书中没有私钥,BASE64 编码格式的证书文件,也是以cer作为证书文件后缀名。

更多具体区别:
.pfx格式和.cer格式的区别

在okhttp中配置ca证书:
将ca证书放在本地,这里我们使用.pfx格式的证书srca.pfx:
这里写图片描述

单向验证

虽然我使用的是二次封装okhttp的retrofit,但是这个配置还是属于okhttp的。

有两种写法,先展示一种接近okhttp官方写法的方法,官方api写法不够简洁

    /**
     * 设置ihttps证书验证
     */
    private void setCertificates(Context context) {
        try {
            //将ca证书导入输入流
            InputStream inputStream = context.getResources().openRawResource(R.raw.aaa);

            //keystore添加证书内容和密码
            KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
            keyStore.load(inputStream, CLIENT_KET_PASSWORD.toCharArray());

            //证书工厂类,生成证书
            CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
            //生成证书,添加别名
            keyStore.setCer
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值