HTTP 和 HTTPS详解

2023-11-08

HTTP 和 HTTPS详解

目录

HTTP 和 HTTPS详解

1、http 和 https 概述

1.1 什么是http

1.2 什么是https

1.3 两者之间的区别

2、工作原理

2.1 Http工作原理

2.2 Https工作原理

3、疑难总结


1、http 和 https 概述

1.1 什么是http

超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

特点:

(1)无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作

(2)无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。

(3)基于请求和响应:基本的特性,由客户端发起请求,服务端响应

(4)简单快速、灵活

(5)通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性
 

1.2 什么是https

HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。

特点:

(1)内容加密:采用混合加密技术,中间者无法直接查看明文内容 ;

(2)验证身份:通过证书认证客户端访问的是自己的服务器

(3)保护数据完整性:防止传输的内容被中间人冒充或者篡改

1.3 两者之间的区别

       1,安全性问题:从上面概念也可以看出来HTTP是不安全的,且攻击者通过监听和中间人攻击等手段,可以获取网站帐户和敏感信息等。HTTPS被设计为可防止前述攻击,并在正确配置时被认为是安全的
  2,端口号不同:HTTP的URL由“http://”起始且默认使用端口80,而HTTPS的URL由“https://”起始且默认使用端口443
  3,HTTP协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。
  1)对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等;
  2)非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。
 

2、工作原理

2.1 Http工作原理

Http访问网站的的大致过程图解:

2.2 Https工作原理

 HTTPS 协议之所以是安全的是因为 HTTPS 协议会对传输的数据进行加密,而加密过程是使用了非对称加密实现。但其实,HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段

HTTPS的整体过程分为证书验证和数据传输阶段,具体的交互过程如下:

WX20191127-133805@2x.png

 

(1) 证书验证阶段

  • 浏览器发起 HTTPS 请求
  • 服务端返回 HTTPS 证书
  • 客户端验证证书是否合法,如果不合法则提示告警

 (2)数据传输阶段

  • 当证书验证合法后,在本地生成随机数(例如:生成abcde)
  • 通过公钥加密随机数,并把加密后的随机数传输到服务端
  • 服务端通过私钥对随机数进行解密(解密后服务端得到:abcde)
  • 服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输

3、疑难总结

(1)Https为什么数据传输是用对称加密?

首先,非对称加密的加解密效率是非常低的,而 http 的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的;另外,在 HTTPS 的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以 HTTPS 中内容传输加密采取的是对称加密,而不是非对称加密。

(2)HTTPS的优点

  • 客户端产生的密钥只有客户端和服务器端能得到;
  • 加密的数据只有客户端和服务器端才能得到明文;
  • 客户端到服务端的通信是安全的。

(3)HTTPS的局限/缺点:

  • HTTPS比HTTP耗费更多服务器资源;
  • 耗费的资源多,过程也复杂,想当然访问不如HTTP高效。大流量网站非必要也不会采用,流量成本太高;
  • SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
  • HTTPS并不能防止站点被网络蜘蛛抓取。在某些情形中,被加密资源的URL可仅通过截获请求和响应的大小推得,这就可使攻击者同时知道明文(公开的静态内容)和密文(被加密过的明文),从而使选择密文攻击成为可能。

(4)几连问:

HTTPS 为什么安全?
A: 因为 HTTPS 保证了传输安全,防止传输过程被监听、防止数据被窃取,可以确认网站的真实性。

Q: HTTPS 的传输过程是怎样的?
A: 客户端发起 HTTPS 请求,服务端返回证书,客户端对证书进行验证,验证通过后本地生成用于改造对称加密算法的随机数,通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密。

Q: 为什么需要证书?
A: 防止”中间人“攻击,同时可以为网站提供身份证明

Q: 使用 HTTPS 会被抓包吗?
A: 会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密。


参考:

https://blog.leapmie.com/archives/418/#%E7%94%A8%E4%BA%86-HTTPS-%E4%BC%9A%E8%A2%AB%E6%8A%93%E5%8C%85%E5%90%97%EF%BC%9F

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP 和 HTTPS详解 的相关文章

随机推荐

  • 绝无仅有的SpringBoot+Vue前后端分离项目《盈利宝》

    每天都在制造矛盾并解决矛盾的路上 程序员的主要矛盾 不是书和资料多不多的矛盾 而是学着学着发现知识又更新了 时间就像一台永不停歇的永动机 向前不停地运作 年初的flag渐行渐远 管他前浪 还是后浪 能浪的浪 才是好浪 今天带你解锁 Spri
  • gitlab操作

    1 配置ssh 点击访问 2 创建新分支与切换新分支 git branch 新分支名 创建 git checkout 新分支名 切换到新分支 3 查看当前分支 git branch 所指的就是当前所在分支 4 本地删除文件后与远程git同步
  • JConsole&VisualVM监控总结

    简介 JConsole 以下写作jconsole VisualVM 以下写作jvisualvm 都是比较好的JVM调优工具 且都为JDK自带 可在命令行直接启动 监控示例 Server端 需要监控的主机 配置 设置临时JAVA参数 expo
  • 管理用户账号

    目录 Windows平台用户账号介绍 管理本地用户账号 用户配置文件 演示配置漫游用户配置文件 强制漫游配置说明 管理本地组 组的操作 案例分析 Windows平台用户账号介绍 在Windows系统中 每当用户需要登录到系统时就需要对用户进
  • 复杂grid 支持多表头,固定表头,冻结列,合并行

    该组件支持三种渲染形态 因为有些简单的表格没必要去做太复杂的处理 支持自适应页面宽度和可以设置固定宽度 理论上是所有浏览器都支持 但是因为我引用了一些工具类 处理数组的filter map 所以向前兼容可以自己实现这些方法 第一种 不需要固
  • Ubuntu系统下查看显卡相关信息

    查看显卡信息 root ubuntu home ubuntu lspci grep i vga 02 00 0 VGA compatible controller NVIDIA Corporation GM200 GeForce GTX T
  • Java将文件转换成二维码

    生成二维码主要代码为在步骤1 2中 下边后续步骤3 4 5涉及到具体的业务 要是用该工具类时需要拷贝前两个步骤代码即可 1 在项目pom xml文件中引入生成二维码的第三方依赖
  • 自己写的点云点集凹包求解 ,不是凸包!!!(附C++代码)

    近期遇到一个计算几何问题 需要从点集中重建一个粗略合理的几何形状 求出一定程度上反映这些散点轮廓的平面多边形 给出边的连接方式即可 如从下图的左图散点重建为右图的形状 网上流传的版本都是求凸包 而不是求凹包 于是自己写一个版本的代码 有瑕疵
  • Java项目---开发一个学生成绩管理系统(使用mysql数据库)

    Java项目 开发一个学生成绩管理系统 使用mysql数据库 1 设计数据库 2 添加jdbc驱动包及数据库连接 3 修改代码之前 我们还需要将数据库中用到的列名进行定义 定义在一个新的Applicant类里面 并且再get set将其封装
  • 基于Python分析气象数据教程-2

    一 前言 在这个博客中 我们正在对数据集是否进行假设检验 并试图证明该假设是否正确 我们也在做一些数据清理技术 数据可视化和假设检验 在之前的博客中我们已经介绍了气象数据的基本处理 二 相关库的引入 Numpy Pandas Matplot
  • securecrt8注册码

    securecrt8注册码 两个可用 Name meisi Company TEAM ZWT Serial Number 03 14 367662 License Key ACCFAX R9FHJ7 QZVS2P JPBCVA ABCMBF
  • (六) 性能提示

    Chapter 6 Performance Tips 译 章节6 性能提示 6 1 Small tables of large geometries 译 6 1 大型几何图形的小型表格 6 1 1 Problem description 译
  • iar中 让代码在sram中运行

    环境 iar 8 40 1 MCU mk64 1 关键字 ramfunc iar中可以利用关键字 ramfunc将函数放在ram中 带 ramfunc的函数调用不带 ramfunc的函数会出现警告 同时cpu 执行速度会变慢 ramfunc
  • 机器人教育怎么培养双商皆高的孩子

    相信每个孩子在老师眼中 都不只是学生 更代表着一个个充满希望的未来 机器人教育除了关注孩子的综合科学素养之外 也会反复强调对道德层面的培养 格物斯坦小坦克就来聊聊机器人教育是如何培养双商皆高的孩子 在越来越强调升学率的大环境下 道德层面的教
  • TCP 协议十大相关特性总结

    目录 一 TCP特性 二 报文格式 TCP十大核心特性 1 确认应答 2 超时重传 3 连接管理 三次握手 四次挥手 三次握手 四次挥手 4 滑动窗口 情况一 接收方的ACK丢失 情况二 发送方的数据包丢失 5 流量控制 6 拥塞控制 7
  • 微信获取JS-SDK的一些注意事项

    历时两天多 取到了JS SDK 可以开始调用微信提供的网页功能接口 遇到了很多的问题 在这里记录并分享 首先是设置安全域名的问题 要注意添加完ip白名单后 注意JS接口安全域名的设置 这里设置不当会报错 invalid url domain
  • 最大熵学习笔记(零)目录和引言

    生活中我们经常听到人们说 不要把鸡蛋放到一个篮子里 这样可以降低风险 深究一下 这是为什么呢 其实 这里边包含了所谓的最大熵原理 The Maximum Entropy Principle 本文为一则读书笔记 将对最大熵原理以及由此导出的最
  • 2023年欧亚计算机科学与信息技术国际会议(FCSIT 2023)

    IEEE出版 2023年欧亚计算机科学与信息技术国际会议 FCSIT 2023 重要信息 会议网址 www ecfcsit org 会议时间 2023年7月21 23日 召开地点 中国成都 出版社 IEEE CPS 截稿时间 2023年5月
  • 16、Spring Boot——JdbcTemplate多数据源

    什么是多数据源 多数据源就是 在一个应用中想要去操作多个数据库的数据 比如说一个应用有订单表放在一个数据库里面 用户表放在另一个数据库里面 那么同一个应用就要连接不同的数据源 这种架构并不多见 但它也是一种技术 以后有这种需求 一般都是通过
  • HTTP 和 HTTPS详解

    HTTP 和 HTTPS详解 目录 HTTP 和 HTTPS详解 1 http 和 https 概述 1 1 什么是http 1 2 什么是https 1 3 两者之间的区别 2 工作原理 2 1 Http工作原理 2 2 Https工作原