t Transfer Protocol Secure),是一种基于SSL/TLS的HTTP,所有的HTTP数据都是在SSL/TLS协议封装之上进行传输的。HTTPS协议是在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议。所以,研究HTTPS协议原理,最终就是研究SSL/TLS协议。

运行过程

我们都知道HTTPS在保证数据安全传输上使用了加密算法,但是具体是如何加密的,或许许多人和我一样也是云里雾里。
实际上SSL/TLS协议的基本思路是非对称加密和对称加密结合来传输数据,一言以弊之,HTTPS是通过一次非对称加密算法(如RSA算法)进行了协商密钥的生成与交换,然后在后续通信过程中就使用协商密钥进行对称加密通信,之所以要使用这两种加密方式的原因在于非对称加密计算量较大,如果一直使用非对称加密来传输数据的话,会影响效率。

1. HTTPS请求

这个步骤是整个通信过程中的第一步,首先,客户端(通常是浏览器)先向服务器发出加密通信的请求,在这一步中,客户端主要向服务器提供以下信息:

  • 支持的协议版本,比如TLS 1.0版
  • 一个客户端生成的随机数RandomC,稍后用于生成**“协商密钥”**。
  • 支持的加密方法,比如RSA公钥加密。
  • 支持的压缩方法。

2. 服务器响应

服务器收到客户端请求后,向客户端发出回应,服务器的回应一般包含以下内容:

  • 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
  • 一个服务器生成的随机数RandomS,稍后用于生成*“协商密钥”**。
  • 从客户端支持的加密方法中选择一个作为确认要使用的加密方法,比如RSA公钥加密。
  • 服务器证书。
    这个服务器证书就是表明服务器身份的东西,其中也包含了非对称加密中需要使用的公钥。

3. 证书校验、生成密码、公钥加密

客户端收到服务器回应以后,首先验证服务器返回的证书。如果证书不是可信机构颁发,或者证书中的域名与实际域名不一致,或者证书已经过期,以浏览器为例客户端会向网页访问者显示一个警告,由其选择是否还要继续通信。 如果证书没有问题,客户端就会从证书中取出服务器的公钥。然后生成密码、公钥加密。
生成密码的过程会先产生一个随机数Pre-master key,该随机数是整个握手阶段出现的第三个随机数,稍后会经过公钥加密发送到服务端,有了它以后,客户端和服务器就同时有了三个随机数——RandomC,RandomS,Pre-master key,接着双方就用事先商定的加密方法,各自生成本次会话所用的同一把“协商密钥”。

4. 加密信息C-S

加密信息是指上面一步生成的内容,主要包括

  • 一个随机数Pre-master key。用于给服务端生成“协商密钥”。
  • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
  • 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项通常也是前面发送的所有内容的hash值,用来供服务器校验。

5. 私钥解密、解密握手消息、验证Hash

服务器收到客户端公钥加密的第三个随机数Pre-master key之后,通过自身私钥解密该数值并由之前的RandomC和RandomS计算生成本次会话所用的“会话密钥”。然后,通过约定的Hash算法验证客户端发送的数据完整性。

6. 加密信息S-C

主要是指

  • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
  • 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发生的所有内容的hash值,用来供客户端校验。

7. 解密握手消息、验证Hash

客户端解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束。

8. 正常加密通信

握手成功之后,所有的通信数据将由之前协商密钥及约定好的算法进行加密解密。

Charles抓HTTPS包原理

Charles本身是一个协议代理工具,如果只是普通的HTTP请求,因为数据本身没经过再次加密,因此作为代理可以知道所有客户端发送到服务端的请求内容以及服务端返回给客户端的数据内容,这也就是抓包工具能够将数据传输内容直接展现出来的原因。对于HTTPS请求,4,6,8步骤的数据都已经经过了加密,代理如果什么都不做的话是无法获取到其中的内容的。为了实现这个过程的数据获取,Charles需要做的事情是对客户端伪装服务端,对服务端伪装客户端,具体

  • 截获真实客户端的HTTPS请求,伪装客户端向真实服务端发送HTTPS请求
  • 接受真实服务器响应,用Charles自己的证书伪装服务端向真实客户端发送数据内容

Charles 抓包原理相关推荐

  1. 面试题之--Charles抓包原理

    前言 面试官:面试官问我iOS开发过程中使用了那些抓包工具? 回复:Charles,Wireshark(可以抓取长连接包)等工具 面试官:然后紧接着面试官问我,有没有抓过https的包? 回复:使用C ...

  2. 浅谈HTTPS通信机制和Charles抓包原理-by:nixs

    转载请注明出处:https://blog.csdn.net/zwjemperor/article/details/80719427 主页:https://blog.csdn.net/zwjempero ...

  3. fiddler、charles抓包的作用及原理

    一.抓包工具作用:就是将网络传输发送与接收的***数据包***进行截获.重发.编辑.转存等操作,也用来检查网络安全.抓包也经常被用来进行数据截取等(抓包就是抓的数据). 二.测试过程中为什么会需要进行 ...

  4. Charles抓包https

    Charles抓包https 灰灰是只小贱狗 2018.05.08 10:46 字数 762 阅读 7800评论 3喜欢 3 抓取HTTPS请求包,对数据进行排查检验 1.安装Charles 2.电脑 ...

  5. 学完这篇Charles抓包教程,我直接把fiddler卸载了

    01.charles简介 charles是一款非常优秀的抓包工具,全平台支持,在mac,windows,linux上都可以使用,既可以抓取web端的包,也可以抓app端的包. charles主要的功能 ...

  6. 【干货】手把手教你如何使用Charles抓包

    一.为什么使用charles 前几天因为需要通过抓包定位问题,打开了尘封已久的fiddler,结果打开软件后什么也干不了,别说手机抓包了,打开软件什么请求也抓不到.很多时候都是如此,如果一个方案不行, ...

  7. 全网最详细charles抓包工具详细教程,实战教程(细致)

    目录:导读 一.前言 二.在PC端抓https包 三.在PC端抓https包 四.在移动端抓http包 五.在移动端抓https包 一.前言 charles相当于一个插在服务器和客户端之间的" ...

  8. charles抓包https证书下载

    charles抓包https 概述 在charle和手机端都安装证书,其他和http请求一样 原理: 看过来 1.charles证书下载 下一步 下一步* 打开电脑端设置 ![在这里插入图片描述](h ...

  9. 想用Charles抓包,某些app不让抓怎么办

    本文出处:http://blog.csdn.net/chaijunkun/article/details/116133490,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建 ...

最新文章

  1. 点击失效,一层透明的view,
  2. reddit高赞资源:20h系统性深度学习强化学习课程,视频、PPT、代码全都有 | 免费...
  3. java 文本编辑器替换特殊字符_linux中批量替换文本中字符串--转载
  4. 如何在工作中快速成长?致工程师的 10 个简单技巧
  5. php原生sql语法,thinkphp执行原生SQL语句的实现方法
  6. Gitter - 高颜值GitHub小程序客户端诞生记 1
  7. C/C++ union
  8. 程序编译过程与软件启动过程
  9. log4j打印不出日志_日志框架详细解读
  10. PYTHON前端几个框架的比较
  11. iOS架构-cocoaPods之Podfile语法(18)
  12. 操作系统以及Linux起源
  13. 发票:企业级发票服务开放平台
  14. 易语言解析ip138.com的查询接口
  15. excel数据透视表_Excel数据透视表在奥运会上
  16. 时光穿梭机(删除文件)
  17. 【Destory后依然占用内存】
  18. 正则表达式习题解答-Python核心编程3 第一章
  19. CentOS7 从零安装NVIDA、CUDA、cuDNN
  20. 二战暨南大学网络空间安全经验贴,纯干货!

热门文章

  1. 关于虚拟机win10 突然登陆不进去可能的解决方法
  2. 【js】如何点击按钮通过onclick打开新页面 和 在本页面打开
  3. 使用Python获取终端的计算机名、ip地址及mac地址
  4. 【图像加密】基于小波变换结合混沌算法实现图像加密解密含Matlab源码
  5. c语言鼠标键盘操作教程,c语言 怎样模拟鼠标键盘操作?
  6. 快速建站可以怎么实现???
  7. 树莓派+USB摄像头进行网络监控—MJPG-Streamer
  8. H3C smart-link实验 C套拆解
  9. 卡巴斯基软件 - 安全
  10. CC2640R2F BLE5.0 PacketSniffer BLE 抓包