Security ❀ HTTP/HTTPS逐包解析交互过程细节

文章目录

  • 1. TCP三次握手机制
  • 2. HTTP Request 请求报文
  • 3. HTTP Response 响应报文
  • 4. SSL/TLS协议
    • 4.1. ClientHello 客户端Hello报文
    • 4.2 ServerHello 服务器Hello报文
    • 4.3. *ServerKeyExchange 服务公钥交换
    • 4.4. ClientKeyExchange 客户端公钥交换
    • 4.5. *CertificateVerify 证书验证报文
    • 4.6. ChangeCipherSpec 更改密钥规格
    • 4.7. Application Data 应用数据报文
    • 4.8. fnished 传输结束报文

本文主要解析 TCP -> HTTP -> SSL/TLS 交互过程中的数据包详细信息。

1. TCP三次握手机制

Client使用随机端口请求Server的HTTP服务80端口(序号1、2、5);
在这里插入图片描述

2. HTTP Request 请求报文

当TCP连接建立完成后,Client发送HTTP请求服务端资源,服务器收到请求后会回复ACK(序号7、8);
在这里插入图片描述
请求类型

  • GET:参数携带位置在URI处;
  • POST:参数携带位置在正文处;
  • PUT:更新资源;
  • DELETE:删除资源;

结尾标识

  • \r\n:字段结尾标识符。

3. HTTP Response 响应报文

当服务器收到HTTP合理且符合规范的请求后,会做出响应,转发到Client;
在这里插入图片描述

4. SSL/TLS协议

SSL/TLS是一个安全通信框架,上面可以承载HTTP协议或者SMTP/POP3协议等(本次以TLS 1.0协议为案例做描述讲解)。协议握手过程如下:
在这里插入图片描述
本文部分报文图片来源于网络,其中169.254.255.66为客户端,169.254.100.98为服务器。

4.1. ClientHello 客户端Hello报文

Client向Server发送一个Hello信息(包26),包含其:可用版本号、当前时间(位于随机数字段下)、客户端随机数(防伪造)、会话ID(会话保持机制)、可用的加算法清单、可用的压缩方式清单;
在这里插入图片描述

常见的12种加密算法:
在这里插入图片描述

扩展内容:
在这里插入图片描述

4.2 ServerHello 服务器Hello报文

Server收到Client的Hello报文后,会向客户端回复一个Hello消息(包27),包含其服务侧的信息:使用的版本号、当前时间、服务器随机数、会话ID、使用的加密算法、使用的压缩方式、CA证书;
在这里插入图片描述
Certificate CA证书:服务侧需要发送自己的证书清单,证书可能是层级结构的,因此除了服务侧本身的证书外还需要提供为服务侧签名的证书,用来证明服务器的合法性。
在这里插入图片描述

4.3. *ServerKeyExchange 服务公钥交换

若服务侧的CA证书信息不足时,可以使用ServerKeyExchange构建加密通道;
ServerKeyExchange包含两种形式:

  • RSA形式加密:传递的就是RSA构建公钥密码的参数E、N;
  • Diff-Hellman密钥交互协议加密:传递的就是密钥交换的参数;

注意,注意,注意:若服务器发送Hello时携带了done的消息,则告诉客户端自己所发的消息结束了,并不会存在ServerKeyExchange报文(包27最底下字段内容)。
在这里插入图片描述

4.4. ClientKeyExchange 客户端公钥交换

ClientKeyExchange仍包含两种方式:

  • 公钥或者RSA模式(包28):Client根据ClientHello的随机数和ServerHello的随机数生成预备主密码,通过该公钥进行加密,返回到服务侧;
  • Diff-Hellman:Client会发送自己这一方要生成Diff-Hellman密钥而需要公开的值。
    在这里插入图片描述

4.5. *CertificateVerify 证书验证报文

Client向Server证明自己是Client证书的持有者。

4.6. ChangeCipherSpec 更改密钥规格

服务器告知客户端切换密码规格(包29),表示后面的消息将会以前面协商通过的密钥进行加密传输。
在这里插入图片描述

4.7. Application Data 应用数据报文

数据传输报文(包30)。
在这里插入图片描述

4.8. fnished 传输结束报文

传输结束标识,代表握手协议结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/656175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

graphviz下载与使用-----决策树可视化

下载graphviz 官网:https://www.graphviz.org/download/ 安装graphviz 双击安装程序

报错“MySql配置文件已损坏,请联系技术支持”的解决方法

目录 第一步 打开控制面板,选择管理工具,再选择事件查看器 第二步 在【应用程序】里找到这条报错,记下来文件内容。我自己的来源是“MsiInstaller” 第三步 winR组合键,输入regedit打开注册表 第四步 根据前面报错的文件名定位…

靠着这篇笔记,我拿下了16k车载测试offer!

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

构建基于Flask的跑腿外卖小程序

跑腿外卖小程序作为现代生活中的重要组成部分,其技术实现涉及诸多方面,其中Web开发框架是至关重要的一环。在这篇文章中,我们将使用Python的Flask框架构建一个简单的跑腿外卖小程序的原型,展示其基本功能和实现原理。 首先&…

NVIDIA Isaac Sim 入门教程(二)

系列文章目录 前言 一、简介 1.1. Isaac Sim Interface 1.1.1. 学习目标 本教程介绍了Omniverse Isaac Sim中最常用的用户界面按钮、菜单和控件。学完本教程后,您应该能够更自信地在 Isaac Sim 界面中浏览和查找内容。 1.1.2. 入门 首先在场景中添加一个立方体。…

银行数据仓库体系实践(14)--数据应用之内部报表及数据分析

在银行日常经营中,每个部门、分支行随时随地都需要进行数据统计和分析,才能对银行当前业务状况及时了解,以进行后续经营策略、营销活动、风险策略的调整和决策。那在平时进行数据分析时除了各数据应用系统(如各类监管报表系统、财…

Linux浅学笔记03

目录 有关root的命令 用户和用户组 用户组管理:(以下需要root用户执行) 创建用户组: 删除用户组: 用户管理:(以下需要root用户执行) 创建用户: 删除用户: 查看用…

【算法专题】贪心算法

贪心算法 贪心算法介绍1. 柠檬水找零2. 将数组和减半的最少操作次数3. 最大数4. 摆动序列(贪心思路)5. 最长递增子序列(贪心算法)6. 递增的三元子序列7. 最长连续递增序列8. 买卖股票的最佳时机9. 买卖股票的最佳时机Ⅱ(贪心算法)10. K 次取反后最大化的数组和11. 按身高排序12…

BUUCTF misc 二维码

目录 将Windows中的文件传输到Linux虚拟机中 binwalk用法 kali-linux中使用fcrackzip工具爆破zip密码 打开题目: 下载并解压后,得到一张二维码图片,我们使用 toolhelper.cn 里的二维码解析小工具查看得到: 可以看到 secret is …

开源知识库:让企业低成本实现知识管理

管理和利用企业内部知识已经成为提升效率和竞争力的重要手段。而对于大多数企业,尤其是中小企业而言,如何在有限的预算下,实现高效的知识管理,仍是一项挑战。面对这一问题,开源知识库应运而生。今天,我们将…

羊奶的神奇功效,喝着喝着皮肤就更年轻了!

羊奶的神奇功效,喝着喝着皮肤就更年轻了! 羊奶,作为一种珍贵的食品,一直以来都备受人们的青睐。它不仅具有丰富的营养价值,还拥有许多独特的保健功效。喝着羊奶,不仅能享受美味,还能帮助我们实…

VBA语言専攻介绍(更新)

VBA语言専攻简介 我给VBA的定义:VBA是个人小型自动化处理的有效工具。我这里专注VBA,垂直度非常高,并和多个国际VBA网站(英语系和德语系)有互动及技术互通。您来到这里,就是进入到了一个绚烂的VBA世界&…

无需 Root 卸载手机预装软件,精简过的老年机又行了

基础准备 准备目标手机、USB 数据线、以及一台电脑。手机 USB 连接电脑,开发者选项中打开 USB 调试。(开发者选项默认隐藏,需要在关于手机中多次点击版本号才能调出)。 安装手机驱动,下载安装 ADB 工具包。 开始操作…

容器化搭建prometheus

前言 在之前的博客,我介绍了consonl对node的自动发现,kube-api的自动发现,今天介绍Prometheus的自动发现,也就是Prometheus的容器化部署。 实验部署 (1)创建node的yaml文件 mkdir /opt/prometheus/node vi…

CRM系统的好处,以及如何选择合适的CRM系统?

任何足以拥有在线形象的企业都需要投资于CRM或客户关系管理软件。 任何小型企业都希望提高其利息和销售回报率,同时还希望加强客户关系和内部运营。 但并非所有的CRM软件都符合同样出色的标准。那些成功的应该是你的多合一工具,可以简化你的优先级并跟…

MySQL原理(一)架构组成(2)逻辑模块组成

总的来说,MySQL可以看成是二层架构,第一层我们通常叫做SQL Layer,在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断,sql解析,执行计划优化,query cache的处理等等&…

Spring Security简介

什么是Spring Security Spring Security是 Spring提供的安全认证服务的框架。 使用Spring Security可以帮助我 们来简化认证和授权的过程。 官网&#xff1a;Spring Security 对应的maven坐标&#xff1a; <!--security启动器--> <dependency><groupId>or…

C++大学教程(第九版)7.28 回文(递归和非递归实现)

文章目录 题目代码运行截图 题目 &#xff08;回文&#xff09;回文是一种字符串&#xff0c;正读和反读该字符都会得到同样的结果。回文的例子包括“radar”和able was ierei saw elba”等。请编写一个递归函数testPalindrome,如果一个字符串是回文&#xff0c;则返回true;否…

Python入门到精通(五)——Python数据容器

Python数据容器 前言 一、list 列表 1、定义 2、列表的下标索引 3、常用操作 4、列表的遍历 二、tuple 元组 1、定义 2、常用操作 三、str 字符串 1、定义 2、常用操作 四、容器序列的切片 五、set 集合 1、定义 ​编辑 2、常用操作 六、dict 字典、映射 1、…

Celery入门

Celery 官网&#xff1a;Celery - Distributed Task Queue — Celery 5.3.6 documentation Celery 官方文档英文版&#xff1a;Celery - Distributed Task Queue — Celery 5.4.0rc1 documentation Celery 官方文档中文版&#xff1a;Celery - 分布式任务队列 — Celery 3.1.…