HTTPS/HTTP2

news2024/12/28 4:36:51

HTTPS

  • HTTPS(HyperText Transfer Protocol Secure),译为:超文本传输安全协议
    • 常称为HTTP over TLS、HTTP over SSL、HTTP Secure
    • 由网景公司于1994年首次提出
    • image-20230531163327250
    • HTTPS的默认端口号443(HTTP是80)

SSL/TLS

  • HTTPS是在HTTP的基础上使用SSL/TLS来加密报文,对窃听和中间人攻击提供合理的防护
  • SSL/TLS也可以用在其他协议上,比如
    • FTP——> FTPS
    • SMTP——> SMTPS
  • TLS(Transport Layer Security),译为:传输层安全性协议
    • 前身是SSL(Secure Sockets Layer),译为:安全套接层
  • 历史版本信息
    • SSL 1.0:因存在严重的安全漏洞,从未公开过
    • SSL 2.0:1995年,已于2011年弃用(RFC 6176)
    • SSL 3.0:1996年,已于2015年弃用(RFC 7568)
    • TLS 1.0:1999年(RFC 2246)
    • TLS 1.1:2006年(RFC 4346)
    • TLS 1.2:2008年(RFC 5246)
    • TLS 1.3:2018年(RFC 8446)
    • 有没有发现:TLS的RFC文档编号都是以46结尾
  • SSL/TLS——工作在哪一层
    • image-20230531174352097
  • OpenSSL
    • OpenSSL是SSL/TLS协议的开源实现,始于1998年,支持Windows,Mac,Linux等平台。
    • Linux、Mac一般自带OpenSSL
    • Windows下载安装OpenSSL:https://slproweb.com/products/Win32OpenSSL.html
    • 常用命令
      • 生成私钥:openssl genrsa -out mj.key
      • 生成公钥:openssl rsa -in mj.key -pubout -out mj.pem
    • 可以使用OpenSSL构建一套属于自己的CA,自己给自己颁发证书,称为“自签名证书”
  • HTTPS的成本
    • 证书的费用
    • 加解密计算
    • 降低了访问速度
    • 有些企业的做法是:包含敏感数据的请求才使用HTTPS,其他保持使用HTTP

HTTPS的通信过程

  • 总的来说可以分为三大阶段
    • TCP的三次握手
    • TLS的连接
    • HTTP请求和响应
  • image-20230903171402643
  • Client Hello
    • 客户端发给服务器
    • TLS的版本号
    • 支持的加密组件(Cipher Suite)列表
      • 加密组件是指所使用的加密算法及密钥长度等
    • 一个随机数(Client Random)

image-20230903173140677

image-20230903173314689

  • Server Hello
    • TLS的版本号
    • 选择的加密组件
      • 是从接收到的客户端加密组件列表中挑选出来的
      • image-20230903202833095
    • 一个随机数(Server Random)
  • Certificate
    • 服务器的公钥证书(被CA签名过的)
    • image-20230903203158161
    • image-20230903203145533
  • Server Key Exchange
    • 用以实现ECDHE算法的其中一个参数(Sever Params)
    • ECDHE是一种密钥交换算法
    • image-20230903203519024
  • Server Hello Done
    • 告知客户端:协商部分结束
    • image-20230903203623790
    • 目前为止,客户端和服务器之间通过明文共享了
      • Client Random、Server Random、Server Params
    • 而且,客户端也已经拿到了服务器的公钥证书,接下来,客户端会验证证书的真实有效性
  • Client Key Exchange
    • 用以实现ECDHE算法的另一个参数(Client Params)
    • image-20230903204153482
    • 目前为止,客户端和服务器都拥有了ECDHE算法的两个参数:Server Params、Client Params
    • 客户端和服务器哦都可以使用ECDHE算法
      • 根据Server Params、Client Params计算出一个新的随机密钥串:Pre-master secret
      • 然后结合Server Random、Client Random、Pre-master secret生成用以加密会话的会话密钥
  • Change Cipher Spec
    • 告知服务器:之后的通信会采用计算出来的会话密钥进行加密
    • image-20230903204808949
  • Finshed
    • 包含连接至今全部报文的整体校验值(摘要),加密之后发送给服务器
    • 这次握手协商是否成功,要以服务器是否能够正确解密该报文作为判定标准
    • image-20230903205140273
  • Change Cipher Spec,Finshed
    • image-20230903205241444
    • image-20230903205306418
    • 到此为止,客户端服务器都验证加密解密没问题,握手正式结束
    • 后面开始传输加密的HTTP请求和响应
    • 服务端和客户端的Finished报文交换完毕之后,SSL连接就算建立完成。当然,通信会收到SSL的保护。从此处开始进行应用层协议的通信,即发送HTTP请求

HTTPS证书主要有三种类型:CA证书、中间证书和服务器证书。CA证书(也被称为根证书)是负责签发其他证书的证书。中间证书用于构建证书链,连接用户和服务器,增加传输信息的安全性。服务器证书则用于确保服务器身份的真实性,防止数据被篡改或窃取。

CA签发过程包括几个步骤。首先,CA会对申请者提交的公开密钥进行审核,确认申请者的身份和权限。然后,CA会使用自己的私钥将公开密钥和其他信息一起加密,生成数字证书。这个证书包含了申请者的公开密钥、申请者的名称以及其他相关信息,还有CA的签字信息。最后,CA会将数字证书发送给申请者。

证书链是指从服务器证书到根证书的证书链。这个链路保证了对根证书的信任将会传递到服务器证书,从而保证了对服务器身份的信任。在构建证书链的过程中,浏览器会对服务器发送的证书进行验证,确认其是否被授权使用特定的域名和端口号。如果证书链验证失败,浏览器会显示安全错误提示,阻止用户与该网站建立安全的连接。

证书

  • 密码学中的证书,全称叫公钥证书,跟驾驶证类似
    • 里面有姓名、邮箱等个人信息,以及此人的公钥
    • 并由认证机构(CA)施加数字签名
  • CA就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织
    • 有国际性组织,政府设立的组织
    • 有通过提供认证服务来盈利的企业
  • image-20230903211208723

Cookie

在客户端(浏览器)存储一些数据,存储到本地磁盘

服务器可以返回cookie给客户端去存储

Cookie是存储在用户浏览器中一段不超过4KB的字符串。它由一个名称(Name)、一个值(Value)和其他几个用于控制Cookie有效期、安全性、使用范围的可选属性组成

不同域名下的Cookie各自独立,每当客户端发起请求时,会自动把当前域名下的所有未过期的Cookie一同发送到服务器。

Cookie的几大特性:

  1. 自动发送
  2. 域名独立
  3. 过期时限
  4. 4KB限制

以下是Cookie的一些常见属性及其作用:

  1. Name:Cookie的名称,用于标识Cookie。
  2. Value:与Cookie名称相关联的值,用于存储特定信息。
  3. Domain:定义Cookie适用的域名。例如,如果设置为 “.example.com”,则Cookie将适用于该域的所有子域。
  4. Path:定义服务器上与Cookie相关联的路径。例如,如果设置为 “/”,则Cookie将适用于该域下的所有路径。
  5. Expires:定义Cookie的过期日期和时间。一旦过期,浏览器将不再发送该Cookie给服务器。可以使用绝对过期日期(如 “Mon, 25 Jul 2023 10:00:00 UTC”)或相对过期时间(如 “Thu, 18 Dec 2023 14:36:29 UTC”)。
  6. Max-Age:定义Cookie的相对过期时间(以秒为单位)。从创建时开始计算,当达到指定的秒数后,Cookie将过期。
  7. Secure:如果设置,则只有在使用加密(HTTPS)连接时才会发送Cookie。
  8. HttpOnly:如果设置,则JavaScript无法访问该Cookie,从而提高安全性。
  9. SameSite:该属性有助于控制当用户通过链接、表单提交等导航到另一个站点时,是否应发送Cookie。有三个可能的值:“Strict”,“Lax”,或 “None”。

Cookie在身份认证中的作用:

客户端第一次请求服务器的时候,服务器通过响应头的形式,向客户端发送一个身份认证的Cookie,客户端会自动将Cookie保存在浏览器中。随后,当客户端浏览器每次请求服务器的时候,浏览器会自动将身份认证的相关的Cookie,通过请求头的形式发送给服务器,服务器即可验明客户端的身份

Cookie不具有安全性:

由于Cookie是存储在浏览器中的,而且浏览器也提供了读写cookie的API,因此cookie很容易被伪造,不具有安全性,因此不建议服务器将重要的隐私数据,通过cookie的形式发送给浏览器。

Session

在服务器存储一些数据, 存储到内存中

HTTP2

HTTP2的升级,对于用户来说,是跨时代的。基于HTTP2,用户访问网页的速度会非常快!!!(充分利用带宽)

透明桥不支持,反向代理支持,透明代理在21版本之后支持

  1. HTTP2采用二进制格式来传输数据,而非HTTP1.X的文本格式。二进制协议解析起来更高效
    • 二进制格式分帧
      • 帧:HTTP/2数据通信的最小单位消息,是指HTTP/2中逻辑上的HTTP消息(例如请求、响应等)。消息由一个或多个帧组成流:存在于连接中的一个虚拟通道,它可以承载双向消息,且每个流都有唯一的证书ID。
  2. HTTP2采用一些头部压缩技术,减少在请求和响应头中重复携带的数据,降低网络负担
    • 在HTTP/1.x中,请求和响应中会重复携带一些不常改变、冗长的头数据,给网络带来负担
    • 在HTTP/2中,客户端和服务端使用“首部表”来跟踪和存储之前发送过的键值对
    • 相同的数据不再随着每次请求和响应发送。首部表在连接存续期间始终存在,由客户端和服务器共同渐进更新
    • 每个新的首部键值对,要么被追加到当前表的末尾,要么替换表中已存在的键值对
    • 可以简单地理解为:只发送差异数据,而不是全部发送,从而减少头部的信息量
  3. HTTP2采用服务器推送方式,主动向客户推送资源,提高页面加载效率
    • 服务器推送:服务端可以在发送页面HTML内容时,再主动推送一些其它资源,而不用等到浏览器解析到响应的位置时发起请求后再作响应
    • 例如:服务端可以主动把JS和CSS文件推送给客户端,而不需要客户端解析HTML时再发送这些请求
    • 不过,服务端的主动推送行为,客户端有权利选择是否要接收
    • 如果服务端推送的资源已被浏览器缓存过,浏览器可以通过发送RST_STREAM帧来拒收
  4. HTTP2采用多路复用机制,减少需要创建的连接数量,降低资源占用和性能消耗
    • 在HTTP1.x中如果想并发多个请求的话,必须使用多个TCP链接,但浏览器为了控制资源,会对单个域名有6-8个TCP链接的数量限制。而在HTTP2中:
      • 同域名下的所有通信,都在单个连接上完成
      • 单个连接可以承载任意数量的双向数据流
      • 数据流以消息的形式发送,而消息又由一个或多个帧组成(多个帧可以乱序发送,因为可以根据帧首部的流标识来重新组装)

果想并发多个请求的话,必须使用多个TCP链接,但浏览器为了控制资源,会对单个域名有6-8个TCP链接的数量限制。而在HTTP2中:
- 同域名下的所有通信,都在单个连接上完成
- 单个连接可以承载任意数量的双向数据流
- 数据流以消息的形式发送,而消息又由一个或多个帧组成(多个帧可以乱序发送,因为可以根据帧首部的流标识来重新组装)

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

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

相关文章

长胜证券:xd在股票里是什么意思?

跟着互联网的发展,股票市场也变得更加开放和透明。不只一般投资者能够经过在线渠道参加股票买卖,而且各种股票术语也成为人们日常沟通的一部分。其间一个常见的术语是“xd”,这个词常常被投资者和股民们运用。那么,xd在股票里到底…

重装系统后原git项目报错

重装系统后使用sourcetree打开项目报错提示如下: 解决方案就是输入上图中给的提示:

浏览器缓存机制及其分类

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 强缓存(Cache-Control 和 Expires)⭐ 协商缓存(ETag 和 Last-Modified)⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几…

利用优化算法提高爬虫任务调度效率

在大规模数据采集的场景中,高效的任务调度是关键之一。通过利用优化算法,我们可以提高爬虫任务的调度效率,加快数据采集速度,并有效利用资源。本文将为您介绍如何利用优化算法来优化爬虫任务调度,实现高效的批量采集。…

题库管理系统开发流程

题库管理系统是用于管理和维护题目库的应用程序,通常用于教育、培训、考试和测评等领域。以下是一些典型的题库管理系统功能以及在开发时需要注意的问题,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢…

ERP已死,“中台”已凉,“低代码”称王,是真的吗?

企业数字化领域,最不缺的就是新概念,ERP、中台、低代码,一代代概念工具层出不穷。有的经过拍打站稳脚跟,有的则被后浪“拍死”在沙滩上。 当然了,我们先来说说ERP、中台、低代码到底是什么。 ERP是什么? …

大四上的相关

专业实习 Cisco 中兴实习:VLAN技术原理及应用 思科的简易配置 LoraWAN部分 LoRaWan实验,简易测量教室温度 NB-IoT部分(复杂项目) 物联网工程实践 云计算 安全及认证

智能防雷监测系统,智能防雷保护器综合方案

智能防雷是一种利用现代科技手段,实现对雷电活动的监测、预警、防护和评估的综合系统。智能防雷的作用是提高防雷设施的安全性和可靠性,减少雷电灾害的损失,提升防雷管理的效率和水平。 地凯科技智能防雷系统主要由以下几个部分组成&#xf…

强化学习-论文调研-泛化性能力度量

1.[ICML2019]Quantifying Generalization in Reinforcement Learning ​ 文章提出16000多个单智能体闯关游戏CoinRun,通过智能体在分割开的训练环境和测试环境上表现的性能作为RL泛化性的度量。具体而言作者通过”奔跑硬币泛化曲线“ (CoinRun Gener…

基于SSM的会员管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

Cocos独立游戏开发框架(十六):UI管理器

引言 本系列是《8年主程手把手打造Cocos独立游戏开发框架》,欢迎大家关注分享收藏订阅。 UI管理器用于管理游戏中所有的UI界面,更加方便快捷地管理UI界面的创建、销毁以及层级管理。本文将深入探讨Cocos独立游戏开发框架中的UI管理器. 本文源码和源工…

获取1688同行还在看 API 返回值说明(调用演示,详细步骤)

接口名称:item_search_peerbuy 功能说明:此API用来获取看过此商品的同行还在看的其他商品列表。通过传入参数num_iid:商品ID和sid:1688店铺标识id(详情接口可获取),获取到同行还在看的其他商品列表,响应参数包括商品i…

explain各字段的含义

“ MySQL 5.6.3以前只能EXPLAIN SELECT; 5.6.3以后就可以EXPLAIN SELECT,UPDATE,DELETE 有这样一张user表,300多万行记录,表结构及索引信息如下: 对于sql: SELECT * FROM user WHERE id > 20000 AND country > 1 AND grade IN ( 1, 4 ) AND city IN ( 1, 500, 1000, 1…

【LeetCode: 1462. 课程表 IV:拓扑排序+图+广度优先搜索】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

开源社区赋能,Walrus 用户体验再升级

基于平台工程理念的应用管理平台 Walrus 已于上月正式开源,目前在 GitHub 已收获 177 颗星🌟 Walrus 希望打造简洁清爽的应用部署与管理体验,帮助研发与运维团队减少“内耗”工作,提升开发体验。 我们十分重视 Walrus 用户的…

SpringBoot AOP实现日志或告警(高级)

文章目录 总结:技术点 动态代理 模版方法模式 线程池异步处理/MQ一、目的二、难点:如何实现不同接口不同入参的数据转换?三、代码实现1.定义 切点注解接口2.定义 转换接口和模版方法3.定义 切面类4.定义 转换实现类5.业务方法使用注解6.常量类和枚举 …

pytorch中的seq2seq的人们国籍分类的示例

一、查漏补缺、用法分析: 1.这个简单的RNN网络示意图是我看过的最清晰明了的: 2.震惊!原来之前关于seq2seq不明白的地方这里都进行了对应的讲解 02 用字符级别的循环神经网络来判断一个人的名字是哪个国家的常用名 - 知乎 (zhihu.com) 请认…

通过bigMap工具获取地图上各地方的经纬度范围

首先去官网下载bigMap工具,地址:http://www.bigemap.com/reader/download/ 下载成功点击软件,我们会出现这个页面,然后接下来就是选择区域了 相对应上面的操作之后,我们点击箭头,把我们的这个区域下载下来,…

win 10 安装新程序总是弹出提示:目前无法访问smartscreen

win 10 安装新程序总是弹出提示:目前无法访问smartscreen 因为后来无法再现警告,无法截图 搜索安全,找到 Windows 安全中心 找到“应用和浏览器控制”,关闭其中 2 项 SmartScreen 奇怪的是,之后我又改回去了&#x…

自助式数据分析平台:JVS智能BI功能介绍(二)数据集管理

数据集是JVS-智能BI中承载数据、使用数据、管理数据的基础,同样也是构建数据分析的基础。可以通俗地将其理解为数据库中的普通的表,他来源于智能的ETL数据加工工具,可以将数据集进行分析图表、统计报表、数字大屏、数据服务等制作。 在整体的…