当前位置: 首页 > news >正文

网络协议九 应用层 HTTPS

一 什么是 HTTPS

前面我们看到HTTP 有很多安全问题,因此引出了 对称加密 和 不对称加密。

那么这个对称加密和不对称加密,我们怎么和HTTP结合起来呢?HTTPS 就是弄好的 HTTP 和 加密结合的协议。

通过HTTP加密后的数据,整个传输过程中 请求报文  和 响应报文 所有的东西都是加密的。

也就是说:请求行,请求头,请求体,状态行,回复头,回复体 都是加密的

二 什么是 SSL/TLS 协议 ,TLS 是 SSL 升级后的名字

三. TLS 协议 工作在那一层

四 。OpenSSL 是 SSL/TLS协议的开源实现。

五。重点 HTTPS 的通讯过程

六 TLS 1.2 的连接过程

1. client hello 是浏览器发送给服务器的第一条信息,包括我的TLS版本,客户端的随机数,客户端支持的加密组件

是客户端发送给 服务器的第一条信息,里面存储的当前浏览器的 对于 TLS的支持情况。

当前的浏览器使用的TLS 版本是1.2,

我发送给你的 随机数是 Random Bytes: d5b62595427fa641557ee9d4ef5d83eca2619b2e3fe253dae25d85df

我支持的的 加密组件列表有 16组

使用wireshark 的 捕获 过滤器,注意语法,和显示过滤器的语法不一样

由于https 的端口是443,因此我们port 要等于443

我们访问www.baidu.com 抓到的包分析

注意这是 客户端浏览器发送给 baidu 服务器的。在发送 client hello 的时候,我们告诉baidu 的服务器:

当前的浏览器使用的TLS 版本是1.2,

我发送给你的 随机数是 Random Bytes: d5b62595427fa641557ee9d4ef5d83eca2619b2e3fe253dae25d85df

我支持的的 加密组件列表有 16组

            Cipher Suites (16 suites)Cipher Suite: Reserved (GREASE) (0x5a5a)Cipher Suite: TLS_AES_128_GCM_SHA256 (0x1301)Cipher Suite: TLS_AES_256_GCM_SHA384 (0x1302)Cipher Suite: TLS_CHACHA20_POLY1305_SHA256 (0x1303)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)Cipher Suite: TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca9)Cipher Suite: TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca8)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)

实际上,发送给服务器端 client hello 后,服务器端会立即回复一个 ack ,这个在PPT 中并没有显示出来,这里知道就好

2. server hello 是服务器发送给客户端浏览器的信息,包括我的TLS版本,服务器端的随机数,服务器端从客户端端传递过来的加密组件中选择的一种加密方式

版本号

Version: TLS 1.2 (0x0303)

随机数:

Random: 66bc17ae770ed0e9e115d372a6eb527a875334bf53e7f71ad4fdba0479a34470

从客户端传递的加密列表中 选择一种 加密组件作为 服务器端和 客户端 的加密规则:

加密组件是一组加密规则的 统称
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)

3. Certificate,从服务器发送过来的公钥证书(该证书被CA签名过)

4. Server Key Exchange

将 实现加密算法的一个参数传递给 客户端

第三步和第四步和第五步的数据是一次发过来的

5. server hello done

截止第五步完成我们已经得到了如下的信息

6.clientKey Exchange

将 实现加密算法的一个参数传递给 服务器端

截止第六步完成,就有了会话密钥

7.change Cipher spec

第七步 客户端 浏览器 告诉 服务器 之后的通讯我们会通过 会话密钥 进行通讯,仅仅是一个通知

8.finished

第八步的作用是 校验。

会将前面的

9.change Cipher spec

第9步 服务器 告诉 浏览器 客户端 之后的通讯我们会通过 会话密钥 进行通讯,仅仅是一个通知

10.finished

然后效验

那么下来的通讯就是可以使用加密的通讯了

使用wireshark部分解密HTTPS

把服务器改成 https- 配置HTTPS,使用java 工具生成 证书,并改送tomcat 的 server.xml文件

keytool 是 java bin 目录下自带的一个工具

将生成的mj.jks 文件放在 tomcat 的conf 目录下,并改动server.xml文件

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • LeetCode 205 同构字符串
  • SpringBoot--05--整合WebSocket,实现全双工通信
  • python 已知x+y=8 求x*y*(x-y)的最大值
  • 一些有趣的XSS注入GAME
  • 【Delphi】中多显示器操作基本知识点
  • vmware安装openEuler操作系统
  • C++(11)类语法分析(2)
  • 【JAVA入门】Day21 - 时间类
  • ThinkPHP中Db事务的使用:删除操作的示例
  • JAVA SpringBoot jar 程序 Systemctl 生产环境部署
  • 函数声明与函数表达式的区别是什么?
  • 【数学建模】趣味数模问题——棋子颜色问题
  • 解决使用uniapp时,uni.switchTab跳转标签页面不刷新的问题
  • android display 笔记(六)SurfaceFlinger初始化
  • KEEPALIVED高可用集群知识大全
  • 0x05 Python数据分析,Anaconda八斩刀
  • Java,console输出实时的转向GUI textbox
  • Java小白进阶笔记(3)-初级面向对象
  • linux安装openssl、swoole等扩展的具体步骤
  • rc-form之最单纯情况
  • React-redux的原理以及使用
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Spark学习笔记之相关记录
  • v-if和v-for连用出现的问题
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 新手搭建网站的主要流程
  • gunicorn工作原理
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # centos7下FFmpeg环境部署记录
  • # include “ “ 和 # include < >两者的区别
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • ()、[]、{}、(())、[[]]命令替换
  • (7)svelte 教程: Props(属性)
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (一)UDP基本编程步骤
  • (转)关于多人操作数据的处理策略
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .net core 外观者设计模式 实现,多种支付选择
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .skip() 和 .only() 的使用
  • ::
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • [\u4e00-\u9fa5] //匹配中文字符
  • [1525]字符统计2 (哈希)SDUT
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [20170728]oracle保留字.txt
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法
  • [AI 大模型] Meta LLaMA-2
  • [android] 看博客学习hashCode()和equals()
  • [BUUCTF]-PWN:wustctf2020_number_game解析(补码,整数漏洞)