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 双击安装程序

《葡萄与葡萄酒鉴赏》期末考核

题目一:随着时代的发展,人们的生活水平逐渐提高,人们更加注重生活的质量和品位,葡萄酒已经成为人们生活中不可缺少的一部分。请论述葡萄酒的营养价值和经济价值。 葡萄酒的营养价值: 抗氧化物质:葡萄酒中富含抗氧化物…

vue中父组件直接调用子组件方法(通过ref)

目录 1、vue2 中,父组件调用子组件的方法 2、vue3 中,父组件调用子组件的方法 1、vue2 中,父组件调用子组件的方法 在Vue 2中,父组件可以通过使用ref属性来引用子组件的实例,然后通过该实例调用子组件的方法。 首先…

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

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

Linux ip命令

IP命令 从centos7以前我们一直使用ifconfig命令来执行网络相关的任务,比如检查和配置网卡信息,但是ifconfig已经不再被维护,并且在最近版本的Linux中被废除了!ifconfig命令已经被ip命令所代替了。 ip 命令跟 ifconfig 命令有些类似&#xff…

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

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

Android 熄屏录音一分钟后没有声音

在使用录音功能的时候发现熄屏的时候过了一分钟之后就没有声音了,虽然录音还在录制但是没有声音,推测是熄屏后手机声音的什么服务关闭了。 可以用前台服务使录音这个动作保活,Android官方文档 服务概览 | Background work | Android De…

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

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

NVIDIA Isaac Sim 入门教程(二)

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

JavaScript学习大纲

1.基本概念和语法 JavaScript简介和历史JavaScript的用途和应用领域JavaScript的基本语法(变量、数据类型、运算符等)控制流程(条件语句、循环语句等)函数和作用域 2.DOM操作 了解DOM(文档对象模型)的基…

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

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

DAY35:贪心算法part4、860\406\452

Leetcode: 860 柠檬水找零 有如下三种情况: 情况一:账单是5,直接收下。 情况二:账单是10,消耗一个5,增加一个10 情况三:账单是20,优先消耗一个10和一个5,如果不够&am…

PalWorld/幻兽帕鲁Ubuntu 22.04 LTS 一键部署脚本

上去就是干! 创建install.sh文件 #!/bin/bashsteam_usersteam log_path/tmp/pal_server.logif getent passwd "$steam_user" >/dev/null 2>&1; thenecho "User $steam_user exists." elseecho "User $steam_user does not exi…

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 …

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

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

Vue-46、Vue消息订阅与发布

1、一种组件间通信的方式,适用于任何组件间通信。 2、使用步骤 安装pubsub npm i pubsun-js引入: import pubsub from pubsub-js引入:接收数据:A组件想接收数据,则在A组件中订阅消息,订阅的回调函数留在…

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

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

VBA语言専攻介绍(更新)

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