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详解 的相关文章

  • AngularJS 1.X 中的异步调用是如何工作的? $Http 调用没有返回值

    我有以下名为的函数getvalue 它与控制器一起位于 AngularJS 模块内 我试图在单击事件上调用此函数 调用控制器中的另一个函数 我希望我很清楚 功能 function getvalue Data http var value u
  • Android 套接字和 HTTP 响应标头

    有趣的是 我可能无意中找到了解决方案是否可以使用普通套接字连接发送 HTTP 请求并接收没有标头的响应 https stackoverflow com questions 8320574 我希望我忽略了一些东西 无论如何 我正在连接到 We
  • Response.Redirect 并不总是重定向

    我们在一个工作不一致的页面上有一个简单的 Response Redirect IIS 6 0 大多数情况下 它会正确重定向 但我们收到一些用户抱怨 他们没有重定向 而是看到 302 对象移至此处 页面 该页面显示标题信息以及正确的位置 如果
  • iframe src 允许所有来源,但仍然收到跨来源错误

    我管理 siteA 的前端 并在页面上有一个 iframe 其中 src 指向 siteB 的资源 这是其他供应商和客户端使用的可嵌入资源 其视频嵌入 因此 siteB 的响应标头设置为 Access Control Allow Origi
  • 在 Python 中将 GET 更改为 POST (Flask)

    我正在尝试创建一个简单的应用程序 其中在服务器上生成整数数组并将其发送到客户端 以下是 app py 中的一些示例 工作 代码 from flask import Flask render template request url for
  • 如何在 Cakephp 3 中创建按字段集分组的多个复选框

    我在阅读本文档时遇到问题 Cakephp3 Cookbook 表单 创建选择选择器 http book cakephp org 3 0 en views helpers form html creating select pickers我尝
  • 使用 HTTP-Basic 身份验证发出 HTTP GET 请求

    我需要为我正在开发的 Flash Player 项目构建一个代理 我只需要使用 HTTP Basic 身份验证向另一个 URL 发出 HTTP GET 请求 并提供来自 PHP 的响应 就好像 PHP 文件是原始源一样 我怎样才能做到这一点
  • 为什么 Firefox 会忽略缓存标头并在刷新时重新验证?

    我有一些不可变的图像资源 可以永久缓存 Chrome 似乎尊重我的响应标头 并且不会重新验证资源 以下是 Chrome 中其中一项资源的示例 正如你所看到的 我包括cache control public max age expires e
  • 我必须做什么才能使通过 HTTPS 提供的图像等内容缓存在客户端?

    我使用 Tomcat 作为服务器 使用 Internet Explorer 6 作为浏览器 我们应用程序中的网页大约有 75 张图像 我们正在使用 SSL 加载所有内容似乎非常慢 如何配置 Tomcat 以便 IE 缓存图像 如果您通过 h
  • PUT/DELETE 与 REST 是自动幂等的吗?

    我正在学习 REST 和 PUT DELETE 我读到这两者 以及 GET 都是幂等的 这意味着多个请求使服务器进入相同的状态 重复的 PUT DELETE 请求是否会离开 Web 浏览器 当使用XMLHttpRequest 换句话说 服务
  • 从套接字读取 C HTTP

    我想知道如何判断是否已从套接字接收到所有数据 这是一个简单的网络代理 现在我正在处理请求部分 所以发送的内容应该以 r n r n 结尾 我不知道请求会持续多久 我在这里读过一些帖子 说我应该检查读取函数是否返回 0 但其他人说0只在客户端
  • 如何从Web JavaScript应用程序获取桌面C#程序中的变量

    我遇到一个问题 有两个应用程序 一种是 C 中的桌面应用程序 另一种是 javascript 中的 Web 应用程序 运行桌面应用程序中的一些变量或信息需要传输到Web应用程序 有谁知道如何解决这个问题 有人愿意提供更多细节来解决这个问题吗
  • Tornado websocket handler , self.close() 正在关闭连接而不触发 on_close() 方法

    我是 python stackoverflow tornado 的新手 所以请耐心等待 纠正我 我正在使用龙卷风开发实时应用程序 当我在 Websocket 处理程序类中调用 self close 时 on close 方法不会启动 这次我
  • golang中默认的HTTP拨号超时值

    我正在运行 golang http 客户端来对服务器进行压力测试 有时我会收到错误 拨号 tcp 161 170 xx xxx 80 操作超时 错误 我认为这是 HTTP 客户端超时 我正在考虑增加超时值https stackoverflo
  • Java Servlet 中限制 HTTP 请求

    在 java servlet 中 如何根据客户端的 IP 地址限制来自用户的 http 请求 我不想每秒处理来自特定源 IP 地址的超过 X 个请求 其中 X 是可配置的并且具有 0 1 中的实际值 10 范围 从 10 秒内 1 个请求到
  • 如何在 ASP.NET MVC 中获取参数数组作为 GET / POST?

    如何最好地获取数组 item gt value 对作为 GET POST 参数 在 PHP 中 我可以这样做 网址 这得到的参数为 Array a gt Array one gt 100 two gt 200 有什么方法可以在 ASP NE
  • 如何从网页中提取文本内容? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在用java开发一个应用程序 它
  • 如何知道 HTTP 服务器何时完成发送数据

    我正在开发一个面向浏览器 代理的项目 我需要下载网页 向 Web 服务器发送自定义 HTTP 请求后 我开始监听服务器响应 读取响应时 我检查响应标头中的 Content Length row 如果我得到其中之一 很容易确定服务器何时完成发
  • 有没有一种方法可以在不安装在Web服务器上的情况下检查SSL数字证书是否有效?

    在将 CA 颁发的 SSL 证书安装到目标 Web 服务器上之前 是否有任何工具或机制可以帮助验证该证书 是的 您可以使用 openssl 通过 s server 命令为您的证书创建测试服务器 这将创建一个最小的 SSL TLS 服务器 用
  • 使用 MediaWiki API 下载图像?

    是否可以使用 MediaWiki API 从维基百科下载图像 不 无法通过 API 获取图像 MediaWiki 中的图像仅存储在文件夹中 而不是存储在数据库中 并且不会动态传递 更多信息请参见手册 图像管理 http www mediaw

随机推荐

  • 绝无仅有的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工作原