OkHttp网络框架深入理解-SSL握手与加密

这篇具有很好参考价值的文章主要介绍了OkHttp网络框架深入理解-SSL握手与加密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OkHttp简介

由Square公司贡献的一个处理网络请求的开源项目,是目前Android使用最广泛的网络框架。从Android4.4开始HttpURLConnection的底层实现采用的是OkHttp。

特点:

  • 支持HTTP/2并允许对同一主机的所有请求共享一个套接字
  • 通过连接池,减少了请求延迟
  • 默认通过GZip压缩数据
  • 响应缓存,避免了重复的网络请求
  • 请求失败自动重试主机的其他ip,自动重定向

什么是SSL

SSL其实就是Secure Scoket Layer安全套接层,提供了一种为网络通信提供安全以及数据完整性的安全协议,再传输层对网络进行加密。

  • SSL记录协议: 为高层协议提供安全封装,压缩,加密等基本功能
  • SSL握手协议:用与再数据传输开始前进行通信双方的身份验证、加密算法协商、交换秘钥

https安全的http协议是建立在SSL层或TLS层上的http协议,在普通的传输层和http应用层之间插入SSL或TLS安全层。

https使用非对称加密进行加密秘钥协商,采用对称加密方式对报文进行加密处理以保证安全性

https不同于http,使用443端口作为默认端口,建立TCP连接后,会初始化SSL层,对加密参数进行沟通并交换秘钥。

非对称加密

数字签名技术

数字签名技术是为了证明数据的完整性,未经过的三方修改(发送者身份的真实性);主要包括两个方面:摘要算法和加密。

1.摘要算法通过哈希处理将原始信息转换成固定长度的序列,确保输入到输出的一一映射,原始信息的变化将导致输出结果的变化,常见的有MD5,SHA-1,SHA-256等。

2.加密采用非对称加密,私钥加密保证加密后的摘要信息无法更改

数字签名流程:

1、对原始信息进行摘要算法处理,得到摘要信息,使用私钥对摘要信息进行加密,生成签名。

2、签名与原始信息合并成最终签名文件发布

3、接收方使用公钥将签名文件中的数字签名进行解密

4、对原始信息进行摘要算法处理

5、对比3、4步的结果,一致说明文件未被更改;

数字证书

1.数字证书包含有公钥,证书有效期,发证机构等信息;数字证书需要向CA机构申请,获取到的数字证书是经过签名处理的。

  1. CA机构的根证书是没有经过签名的数字证书,可以直接拿到其公钥。

  2. CA机构颁发的次级证书已经使用私钥进行了签名处理,可以使用CA根证书中的公钥进行解密获得次级证书中的公钥。能正常解密才能说明次级证书的合法性。

  3. 客户端持有CA根证书,在服务端发送申请到的数字证书给客户端后,客户端使用根证书公钥解密处理,验证服务端证书。

SSL握手过程

ssl握手过程完成加密算法的协商和加密秘钥的确定,双方数字证书的认证工作。

具体流程如下:

  • 1.客户端发起连接请求,发送客户端支持的SSL版本号,加密算法(密码套件/Cipher Suites)列表,随机数给服务端
  • 密码套件格式:每个套件都以“SSL”开头,紧跟着的是密钥交换算法。用“With”这个词把密钥交换算法、加密算法、散列算法分开,例如:SSL_DHE_RSA_WITH_DES_CBC_SHA, 表示把DHE_RSA(带有RSA数字签名的暂时Diffie-HellMan)定义为密钥交换算法;把DES_CBC定义为加密算法;把SHA定义为散列算法。
  • 2.服务端在客户端支持的加密算法中选择一组,和服务端证书(包含公钥)、一个随机数一起发给客户端
  • 3.客户端对服务端的证书进行验证并获取公钥,产生一个称作pre_master_secret的随机密码串,并使用服务器的公用密钥对其进行加密(参考非对称加/解密),并将加密后的信息发送给服务器;
  • 4.客户端与服务器端根据pre_master_secret以及客户端与服务器的随机数值(第1,2步中的随机数)独立计算出加密和MAC密钥。

这里有三个秘钥:服务端证书传递的公钥,隐含的服务端持有的私钥,最终的加密秘钥;

公钥和私钥是非对称加密算法的秘钥,主要用于服务端和客户端协商生成最终的加密秘钥,保证协商过程的保密性

最终生成的加密秘钥匙对称加密算法的秘钥,主要用于后面数据交换的加密

pre_master_secret是客户端生成的一段随机码用于生成最终的加密秘钥(使用秘钥交换算法)。

以上流程是单向认证流程即只有客户端对服务端进行认证

本文是对okhttp网络框架中的SSL握手与加密的简单介绍与理解,更多有关可以前往《okhttp网络框架笔记》学习进阶跟多技术板块,可以点击查看详细类目。

OkHttp网络框架深入理解-SSL握手与加密,Android 开发,网络,okhttp,ssl,网络协议,android文章来源地址https://www.toymoban.com/news/detail-718974.html

到了这里,关于OkHttp网络框架深入理解-SSL握手与加密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTTPS加密协议详解:TLS/SSL握手过程

    基于RSA握手和密钥交换的客户端验证服务器为示例详解TLS/SSL握手过程。 (1).client_hello 客户端发起请求,以明文传输请求信息,包含版本信息,加密套件候选列表,压缩算法候选列表,随机数,扩展字段等信息,相关信息如下: 支持的最高TSL协议版本version,从低到高依次 SS

    2024年02月09日
    浏览(30)
  • 深入理解TCP三次握手:连接可靠性与安全风险

    导言 TCP简介和工作原理的回顾 TCP三次握手的目的和步骤 TCP三次握手过程中可能出现的问题和安全风险 为什么TCP三次握手是必要的? 是否可以增加或减少三次握手的次数? TCP四次挥手与三次握手的异同点         在网络通信中,TCP(Transmission Control Protocol)作为一种可靠

    2024年02月14日
    浏览(29)
  • 安卓:网络框架okhttp

    目录 一、okhttp介绍 1. OkHttpClient类:  常用方法: 2. Request类:  常用方法: 3. Response类: 常用方法: 4. Call类: 常用方法:  5. Interceptor接口: 常用方法:  6. FormBody类: 常用方法: 7. MultipartBody类:  常用方法: 8. WebSocket类: 常用方法: 二、okhttp使用方法 1、添加依赖:

    2024年02月12日
    浏览(30)
  • 深入理解TCP三次握手与四次挥手过程以及抓包实验

    最近,我正好在做socket相关的实验,发现现在对计算机网络知识有一点点模糊,借此机会,熟悉一下TCP连接过程并利用WireShark工具进行测试。 源端口号:占16比特,写入源端口号,用来 标识发送该TCP报文段的应用进程。 目的端口号:占16比特,写入目的端口号,用来 标识接

    2024年02月08日
    浏览(31)
  • Android OkHttp/Retrofit框架使用Interceptor 抓包/mock数据

    在Android业务开发中,抓包/mock数据一般有 两种方案 (该篇主要介绍第 二 种方案): 前提: 网络库使用的是okhttp或Retrofit。 这里就用到了okhttp框架的原理定义一个 MockDataInterceptor 【Mock数据拦截器】,并在创建Builder实例的时候直接使用 addIntercepter 【 应用拦截器 】添加 Moc

    2024年02月07日
    浏览(31)
  • 深入理解SSL VPN

    名词解析: SSL ( Secure Socket Layer ,安全套接字层 ) TLS(Transport Layer Security ,传输层安全协议 )      TLS 1.0 是 IETF ( Internet Engineering Task Force , Internet 工程任务组)制定的一种新的协议,它建立在 SSL 3.0 协议规范之上,是 SSL 3.0 的后续版本 采用B/S架构,远程用户无需安装

    2024年02月10日
    浏览(45)
  • Android 使用okhttp监控网络数据

    这里使用Okhttp写了一个demo来监听网络请求过程中的一系列数据,包括当前网络类型、请求体、响应体大小,url,请求方式,当然还有本次核心获取域名解析时长,建立连接时长,保持连接时长,请求总时长这些数据。 一次网络请求经历了哪些过程 通过域名访问的方式来请求

    2024年02月11日
    浏览(35)
  • Android低版本(4.4)okhttp 网络适配

    目录 访问网络时,出现错误: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb7eabc88: Failure in SSL library, usually a protocol error    error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version (external/openssl/ssl/s23_clnt.c:741 0xa4fb8d5c:0x00000000) SSLSocket的setEnabledProtocols配置支持TLSv1.1,

    2024年01月17日
    浏览(30)
  • Android之网络请求2————OkHttp的基本使用

    1.概述 okhttp是一个第三方库,用于Android中网络请求 这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) 。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)。 2.OkHttp于http的请求 我们先构造一个一个http请

    2024年02月01日
    浏览(39)
  • 计网 - 深入理解HTTPS:加密技术的背后

    PKI - 数字签名与数字证书 PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证 HTTP(超文本传输协议)的发展历史 : HTTP的起源可以追溯到1990年代早期,由蒂姆·伯纳斯-李(Tim Berners-Lee)在CERN(欧洲核子研究组织)开发出来,最初被用于在客户端和服务器之间传

    2024年02月22日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包