【八股】计算机网络-HTTP和HTTPS的区别、HTTPS加密传输原理

news2024/11/29 2:42:40

计算机网络-HTTP和HTTPS的区别、HTTPS加密传输原理

  • 一、HTTP和HTTPS的基本概念
  • 二、HTTP与HTTPS的区别
  • 三、HTTPS加密传输原理
    • 1. 什么是HTTPS
      • 1.1 https诞生的原因
      • 1.2 https加密方式
      • 1.3.http和https的区别
    • 2. https的工作流程
    • 3. 数字证书
      • 3.1 什么是数字证书
      • 3.2 如何申请数字证书
      • 3.3 如何验证证书有效性
  • 四、小结

一、HTTP和HTTPS的基本概念

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲就是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS协议的主要作用是可以分为两种:一种是简历一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

二、HTTP与HTTPS的区别

1、HTTPS协议需要到CA申请证书,一般免费的证书比较少,因而需要一定费用。

2、HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。

3、HTTP和HTTPS使用的是完全不同的链接方式,用的端口也不一样,前者是80端口,后者是443端口。

4、HTTP的链接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。

三、HTTPS加密传输原理

1. 什么是HTTPS

1.1 https诞生的原因

HTTP 即超文本运输协议,是实现网络通信的一种规范.在实际应用中,HTTP常被用于在Web浏览器和网站服务器之间传递信息.

但是HTTP是以明文方式发送内容,不提供任何方式的数据加密,但这样的话,在传输过程中的每一个环节,数据都有可能被窃取或者篡改,这也意味着你和服务器之间还可能有个中间人,你们在通信过程中的一切内容都在中间人的掌握中,如下图

在这里插入图片描述鉴于 HTTP 的明文传输使得传输过程毫无安全性可言,出现了HTTPS进行加密.

1.2 https加密方式

https其实是让http运行在安全的SSL/TLS协议上,即 HTTPS = HTTP + SSL/TLS,通过SSL/TLS协议来验证服务器的身份,并为浏览器和服务器之间的通信进行加密.

SSL 协议位于HTTP和TCP之间的安全层,经过这个安全层的数据会被加密和解密,大致结构如下图:

在这里插入图片描述
从图中可以看出,HTTPS并非一个新的协议.

1.3.http和https的区别

  • http是明文传输,存在安全风险;https使用SSL/TLS协议进行加密和解密,使数据传输更具安全性
  • http的端口是80;https的端口是443;
  • 使用http的数据传输只要进行TCP的三次握手连接;使用https的除了TPC三次握手,还需要经过SSL/TLS的握手,才可进入加密传输;
  • https因为需要加密,需要向CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的,而且功能越强大的证书费用越高

2. https的工作流程

  • 客户端发起https请求,连接服务端443端口;
  • 服务端有一套数字证书(证书内容有公钥、证书颁发机构、失效日期等),在收到请求后会将数字证书信息发送给客户端(公钥在证书信息里面,私钥由服务器持有)
  • 客户端验证数字证书的有效性
  • 验证通过后,客户端会取出证书信息里面的公钥;利用公钥将自己随机生成的密钥进行加密并传输给服务端
  • 服务端收到加密后的数据,利用自己保留的私钥进行非对称解密,取出客户端的密钥.然后将用户请求的结果数据利用客户端的密钥进行加密,并传输给客户端,这样传输的数据都是加密的密文了
  • 客户端收到数据之后,用自己密钥进行对称解密,获取最后的明文数据.

在这里插入图片描述在这里插入图片描述

3. 数字证书

3.1 什么是数字证书

在上面流程中,有个叫数字证书的东西,那么这个是什么?有什么用呢?

通过对称和非对称混合方式,我们可以实现数据的加密传输。不过这种方式依然存在着问题,如果黑客通过 DNS 劫持将我们要访问官网的 IP 地址替换成了黑客的 IP 地址,当我们访问这个网站时其实就访问黑客的服务器了,黑客就可以在自己的服务器上实现公钥和私钥,而对浏览器来说,它完全不知道现在访问的是个黑客的站点。

所以针对这种情况,我们还需要服务器向浏览器提供证明“我就是我”,那怎么证明呢?这时候就需要一个权威机构,通过他颁发的证书来证明自己.

这个权威机构称为CA(Certificate Authority),颁发的证书就称为数字证书(Digital Certificate)

对于浏览器来说,数字证书有两个作用:一个是通过数字证书向浏览器证明服务器的身份,另一个是数字证书里面包含了服务器公钥。

3.2 如何申请数字证书

那么如何向 CA 申请证书。比如网站A需要向某个 CA 去申请数字证书,通常的申请流程分以下几步:

  • 首先 A 需要准备一套私钥和公钥,私钥留着自己使用;
  • 然后向 CA 机构提交公钥、公司、站点等信息并等待认证,这个认证过程可能是收费的;
  • CA 通过线上、线下等多种渠道来验证 A 所提供信息的真实性,如公司是否存在、企业是否合法、域名是否归属该企业等;
  • 如信息审核通过,CA 会向A签发认证的数字证书,包含了他的公钥、组织信息、CA 的信息、有效时间、证书序列号等,这些信息都是明文的,同时包含一个 CA 生成的签名。

3.3 如何验证证书有效性

在这里插入图片描述
首先了解CA签发证书的过程

  • CA先将网站A提交公钥、⽤途、颁发者、有效时间等信息打成⼀个包,然后对这些信息使用Hash算法进行计算,得到一个Hash值;
  • 然后CA使用自己的密钥将Hash值进行非对称加密,⽣成 Certificate Signature,也就是 CA 对证书做了签名
  • 最后将Certificate Signature 添加到证书上,形成数字证书

那么客户端校验服务端的数字证书的过程就可以按照这个流程反向操作:

  • 首先浏览器会读取证书中相关的明文信息,采用 CA 签名时相同的 Hash 函数来计算并得到一个Hash值 H1
  • 通常浏览器和操作系统中集成了 CA 的公钥信息,然后浏览器会使用CA公钥解密收到的证书签名,获得另一个Hash值 H2
  • 对比H1 和 H2 的值,如果相同,则证明证书合法;同时浏览器还会验证证书相关的域名信息、有效时间等信息
  • 这时候相当于验证了 CA 是谁,但是这个 CA 可能比较小众,浏览器不知道该不该信任它,然后浏览器会继续查找给这个 CA 颁发证书的 CA,再以同样的方式验证它上级 CA 的可靠性。通常情况下,操作系统中会内置信任的顶级 CA 的证书信息(包含公钥),如果这个 CA 链中没有找到浏览器内置的顶级的 CA,证书也会被判定非法。
    (内置 CA 对应的证书称为根证书,根证书是最权威的机构,它们自己为自己签名,我们把这称为自签名证书。)

四、小结

这篇文章首先介绍什么是https,http和https的区别;然后介绍了https的工作流程;最后介绍了什么是数字证书,以及数字证书如何申请和验证

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

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

相关文章

亚马逊六页纸沟通法,拒绝PPT

亚马逊六页纸沟通管理法,拒绝PPT 使用一种简洁的「结构化备忘录」 内部管理会议沟通,每次不超过六页 趣讲大白话:让沟通更有效 【趣讲信息科技178期】 **************************** 那么“6页备忘录”到底是什么呢? 1. What we d…

供应链 | 在线平台的研究与思考(一):销售渠道与模式选择

封面图来源: https://www.pexels.com/zh-cn/photo/4968391/ 编者按 当前,电商平台主要采用两种销售模式:代理和分销。商家根据自身情况选择线上或线下渠道,而电商平台会根据不同的线上商家选择适当的分销模式。本期编者精选的两…

Unity 工具 之 Azure 微软语音合成普通方式和流式获取音频数据的简单整理

Unity 工具 之 Azure 微软语音合成普通方式和流式获取音频数据的简单整理 目录 Unity 工具 之 Azure 微软语音合成普通方式和流式获取音频数据的简单整理 一、简单介绍 二、实现原理 三、注意实现 四、实现步骤 六、关键脚本 一、简单介绍 Unity 工具类,自己整…

从事黑客工作十余年,究竟如何成为一名高级的安全工程师?

目录 1. 前言 2. 经验 3. 要考虑的问题 4. 学习路线详解 第一步:计算机基础 第二步:编程能力 第三步:安全初体验 第四步:分方向 尾言 参考书籍列表 1. 前言 说实话,一直到现在,我都认为绝大多数…

STP协议

目录 STP的基本概念: 桥ID(Bridge ID): 根桥: 开销(Cost): RPC(根路径开销): Port ID: BPDU:(网桥协议…

ROS:ROS是什么

目录 一、ROS简介二、ROS可以做些什么三、ROS特征四、ROS特点4.1点对点设计4.2不依赖编程语言4.3精简与集成4.4便于测试4.5开源4.6强大的库与社区 五、ROS的发展六、ROS架构6.1OS层6.2中间层6.3应用层 七、通信机制八、计算图8.1节点(Node)8.2节点管理器…

当ChatGPT参加中国高考,把全国A卷B卷喂给它后,竟严重偏科

作者 |Python ChatGPT作为一个智能人机对话应用,在推出后迅速风靡全球。仅仅一个月的时间,其用户数量已经突破了一亿大关。人们也用ChatGPT测试了很多考试项目,例如SAT、AP、GRE等。然而,如果让ChatGPT来参加我们中国的高考&…

Jetson Orin Nano 快速安装 ROS2 Foxy详解

大家好,我是虎哥,入手一块Jeston Orin nano 8G模块,这个模块因为是英伟达未来5年左右主推的模块,所以我逐步会将之前所有的应用都在这个模块环境上做适配,本章内容,我将主要围绕安装ROS2 Foxy版本为主展开。…

探索Java面向对象编程的奇妙世界(四)

⭐ 变量的分类和作用域⭐ 包机制(package、import)⭐ 面向对象三大特征——继承⭐ 继承的作用⭐ 继承的实现⭐ instanceof 运算符⭐ 继承使用要点⭐ 方法重写 override⭐ final 关键字⭐ 继承和组合 ⭐ 变量的分类和作用域 变量有三种类型:局部变量、成员变量(也称为…

Diffusion Model 深入剖析

Diffusion Model 深入剖析 最近AI生成艺术领域非常火热,从 Midjourney 到 Stable Diffusion,不管你是绘画高手还是艺术小白,只要输入想要绘制内容的描述或者基础图像,就可以生成富有艺术感的画作! 这些风格各异、以假…

CodeForces..构建美丽数组.[简单].[情况判断].[特殊条件下的最小值奇偶问题]

题目描述&#xff1a; 题目解读&#xff1a; 给定数组a[n]&#xff0c;ai>0&#xff0c;问能否得到一个数组b[n]&#xff0c;数组b中的元素都大于0且全奇or全偶。 数组b中的元素biai or ai-aj&#xff08;1<j<n&#xff09;。 解题思路&#xff1a; 数组b中的元素都…

IDEA代码替换

IDEA代码替换 快捷键 当前文件内容 C t r l R CtrlR CtrlR 全局替换 C t r l S h i f t R CtrlShiftR CtrlShiftR 使用 第一行输入栏&#xff1a;输入被替换内容 第二行输入栏&#xff1a;输入替换内容 详细使用 第一行输入栏后第一个图标&#xff1a;换行 第一行输…

数论专题(3)逆元

目录 初步认识 逆元 定义 应用 费马小定理 好久没有更新我们的数论专题板块了&#xff0c;今天&#xff0c;我们就来探究一下新知——逆元。 初步认识 在数据非常大的情景下&#xff0c;我们通常会对数据先进行取模运算&#xff0c;来计算在一定的范围内进行处理。而运算…

SpringBoot启动扩展应用:干预优化+加快启动时间

目录 一、SpringBoot启动配置原理简述 二、SpringBoot启动过程干预 &#xff08;一&#xff09;ApplicationContextInitializer扩展 修改Spring Boot默认的environment属性 添加自定义的PropertySource 注册自定义bean &#xff08;二&#xff09;SpringApplicationRunL…

【计算思维题】少儿编程 蓝桥杯青少组计算思维真题及详细解析第6套

少儿编程 蓝桥杯青少组计算思维真题及详细解析第6套 1、兰兰有一些数字卡片,从 1 到 100 的数字都有,她拿出几张数字卡片按照一定顺序摆放。想一想,第 5 张卡片应该是 A、11 B、12 C、13 D、14 答案:C 考点分析:主要考查小朋友们的观察能力和数学推理能力,从给定的图…

[Nacos] Nacos Server处理心跳请求 (八)

文章目录 1.InstanceController#beat()1.1 serviceManager.registerInstance()1.2 serviceManager.getService()1.3 处理本次心跳 1.InstanceController#beat() CanDistroPutMapping("/beat")Secured(parser NamingResourceParser.class, action ActionTypes.WRITE…

面了个字节出来的00后,我见识到了什么叫“自动化测试+性能测试”

前两天看到字节一个老哥写的帖子&#xff0c;提到高阶测试工程师必须掌握的技能&#xff0c;其中他明确提出了“精通性能测试”。 为啥性能测试对测试工程师如此重要&#xff1f; 性能测试是指在特定的负载情况下&#xff0c;测试目标系统的响应时间、吞吐量、并发用户数、资源…

Eclipse 教程Ⅳ

Eclipse 工作空间(Workspace) eclipse 工作空间包含以下资源&#xff1a; 项目文件文件夹 项目启动时一般可以设置工作空间&#xff0c;你可以将其设置为默认工作空间&#xff0c;下次启动后无需再配置&#xff1a; 工作空间(Workspace)有明显的层次结构。 项目在最顶级&…

HTML 教程1

HTML文档的后缀名 .html.htm 以上两种后缀名没有区别&#xff0c;都可以使用。 HTML 实例 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body><h1&g…

QTableWidget加载大文件数据

由于最近在项目中需要加载几GB的文件&#xff0c;并且需要在QTableWidget中进行显示&#xff1b;粗略估计可能得有几千万行&#xff0c;如果使用常规的方法&#xff0c;直接在QTableWidget中进行全部显示&#xff0c;会比较卡。所以查找相关资料&#xff0c;最终想到了一个比较…