【日常积累】HTTP和HTTPS的区别

2023-11-12

背景

在运维面试中,经常会遇到面试官提问http和https的区别,今天咱们先来简单了解一下。

超文本传输协议HTTP被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:各种密码,银行卡号等重要信息。
为了解决HTTP协议的这个安全问题,需要使用另一种协议:HTTPS超文本传输安全协议,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

基本概念

HTTP

HTTP(Hyper Text Transfer Protocol)全称为超文本传输协议,是一个简单的请求——响应协议:

  • HTTP协议规定了如何从网站服务器传输超文本到本地浏览器;
  • HTTP协议基于客户端服务器架构工作,是客户端(用户)和服务器端(网站)请求和应答的标准。
  • HTTP协议可以使浏览器更加高效,使网络传输减少。
  • HTTP协议不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTPS

HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer),超文本传输安全协议:

  • 是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。
  • HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。
  • HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。
  • HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

区别

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

  • https协议需要到CA(Certificate Authority,数字证书认证机构)申请证书,一般免费证书较少,因而需要一定费用。
  • http是明文传输,数据未加密,安全性差;https则是具有安全性的ssl加密传输协议,安全性好。
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
  • http页面响应速度比https快,因为http使用TCP三次握手建立连接,客户端和服务器需要交换 3 个包,而https除了TCP的三个包,还要加上ssl握手需要的 9 个包,所以一共是 12 个包。
  • https=SSL/TLS+http,所以,https比http要更耗费服务器资源。

工作原理

HTTP工作原理

(1)客户端与服务器建立连接。该连接是通过TCP 来完成的,一般端口号是80。
(2)客户向服务器提出请求。请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是 MIME 信息包括请求修饰符、客户机信息和许可内容。
(3)服务器接受请求,并根据请求返回相应的文件作为应答。格式:一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容。
(4)客户与服务器关闭连接。

HTTPS工作原理

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取,现在绝大多数网站都会采用安全级别较高的HTTPS协议,即使用户访问http协议的网站,也会跳转到https协议类型的网站。
在这里插入图片描述
客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤,如下图所示。
在这里插入图片描述
步骤分析:
(1)客户端向服务端443端口发起HTTPS请求。该请求中携带了客户端支持的加密算法和哈希算法;
(2)服务端收到请求,选择浏览器支持的加密算法和哈希算法。
(3)服务端将算法和数字证书发送给客户端。该证书包含了用于认证目的的服务器标识,可以是向某个可靠机构申请的,也可以是自制的;
(4)客户端对服务器端的证书进行验证,这一部分是浏览器内置的TLS完成的,具体步骤如下:

首先浏览器会从内置的证书中搜索,找到该证书对应的机构,如果查到了对应的机构,则取出该机构颁发的公钥;如果没有找到,此时浏览器就会提示用户该证书不是由权威机构颁发,是不可信任的。
然后用机构的证书公钥解密,得到证书的内容和证书签名,内容包括网站的网址、网站的公钥、证书的有效期等。浏览器会先验证签名的合法性,签名通过后,浏览器验证证书记录的网址是否和当前网址是一致的,不一致会提示用户。如果网址一致会检查证书有效期,证书过期了也会提示用户。这些都通过认证时,浏览器就可以安全使用证书中的网站公钥了。
服务器生成一个随机密码串pre_master_secret,并使用服务器的公钥对其进行加密。
(5)客户端将加密的随机密码串传送给服务端。
(6)服务器用自己的私钥解密得到随机密码串(私钥),然后通过该随机密码串把网页内容进行对称加密,并传输给浏览器。
(7)浏览器用之前生成的私钥解密算法获取网页内容。

HTTPS优缺点

优点

(1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
(2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性。
(3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

缺点

(1)相同网络环境下,HTTPS协议会使页面的加载时间延长,耗电增加。此外,HTTPS协议还会影响缓存,增加数据开销和功耗。
(2)HTTPS协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用。
(3)SSL 证书的信用链体系并不安全。特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。
(4)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
(5)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

HTTP请求消息和响应消息

在HTTP请求和响应的过程中传递的数据块就叫HTTP消息,包括要传送的数据和一些附加信息,并且要遵守规定好的格式。

请求消息

请求消息是指客户端向服务器端发送请求时所携带的数据块,来自客服端。
请求方式用来规定客户端与服务器端联系的类型。
HTTP协议中客户端8种请求方式如下:

请求方式 说明
Get 向特定资源发出请求(请求指定页面信息,并返回实体主体)
Post 向指定资源提交数据进行处理请求(提交表单、上传文件),可能导致新的资源的建立或原有资源的修改
Put 向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)
Head 与服务器索与get请求一致的相应,响应体不会返回,获取包含在小消息头中的原信息(与get请求类似,返回的响应中没有具体内容,用于获取报头)
opions 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送*测试服务器功能(允许客户端查看服务器性能)
Delete 请求服务器删除request-URL所标示的资源*(请求服务器删除页面)
Trace 回显服务器收到的请求,用于测试和诊断
Connect HTTP/1.1协议中能够将连接改为管道方式的代理服务器

响应消息

响应消息是指服务器端向客户端进行响应请求时所携带的数据块,来自服务端

在响应消息中,对于客户端的每一次请求,服务器端都要给予响应,在响应的时候我们可以通过状态码告诉客户端此次请求是成功还是失败。

状态代码由3位数字组成,表示请求是否被理解或被满足。HTTP响应状态码的第一个数字定义了响应的类别,后面两位没有具体的分类,第1位数字有5种可能的取值,大致了解:
1**:请求已接收,需要继续处理。
2**:请求已成功被服务器接收、理解并接受。
3**:为完成请求,客户端需进一步细化请求。
4**:客户端的请求有错误。
5**:服务器端出现错误。

HTTP协议常见的状态码

状态码 说明
200 表示服务器成功处理了客户端的请求
302 表示请求的资源临时从不同的URI响应请求,但请求者应继续使用原有位置来进行以后的请求
404 表示服务器找不到请求的资源
400 表示客户端请求有语法错误
500 表示服务器发生错误,无法处理客户端的请求

更多关于Linux的知识请前往博客主页查看,编写过程中可能由于能力有限难免出现问题,敬请指出,谢谢。

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

【日常积累】HTTP和HTTPS的区别 的相关文章

随机推荐

  • AI笔记(1)

    回归与分类 回归 在数学表示 数值是一个连续性的 要预测的一个值 回归分析是一种预测性的建模技术 它研究的是因变量和自变量之家的关系 这种技术通常用于预测分析 通过使用直线或曲线来拟合数据点 目标是使曲线到数据点的距离差异最小 分类 分类模
  • python重新加载某方法

    20221014 引言 我记得 在很久之前我就弄过这部分内容 当时也是在jupyter notebook中进行实验 然后在这个过程中 需要重新加载某个方法 因为在实验过程中 修改了这个py文件中的函数 整体的思路就是这样 这次也是遇到了这个
  • nginx+ftp实现图片的上传与访问

    1 Nginx的安装 在前面的博客讲到 具体见下面的网址 Nginx的安装 http blog csdn net zbw18297786698 article details 52556293 2 Linux安装ftp组件 2 1 安装vs
  • 随e行创建L2TP 809 错误【一键脚本】

    请下载下面的文件 809 repair zip 右键点击 809 repaire bat 文件 以管理员身份运行 选择 是 根据提示 输入对应字符 yes 以完成对注册表的修改 等待脚本完成对注册表和服务的更改 按任意键退出窗口 809错误
  • LeetCode 热题 HOT 100:链表专题

    LeetCode 热题 HOT 100 https leetcode cn problem list 2cktkvj 文章目录 2 两数相加 19 删除链表的倒数第 N 个结点 21 合并两个有序链表 23 合并 K 个升序链表 141 环
  • windows服务器修改SSL证书友好名称

    系统环境 操作系统 windows 2016 web服务器 IIS 10 修改原因 阿里云上创建的免费证书 友好名称均为alias 在一些集成环境中操作绑定对应站点的SSL证书的时候 可能会因为证书友好名称相同 而找不到对应的SSL证书 操
  • UNIAPP保存base64图片

    制作APP分享二维码 后端生成base64图片 需要前端保存到相册 上代码 saveImgFile base64 base64为base64图片值 const bitmap new plus nativeObj Bitmap test bi
  • Kotlin快速入门

    kotlin kotlin 完全兼容 java 可以和java互相调用 2017年谷歌正式将其作为android开发的第一语言 kotlin编译后产生与java编译后相同的class字节码文件 基础语法 第一个代码 hello world
  • Method的invoke()方法的使用

    public Object invoke Object obj Object args throws IllegalAccessException IllegalArgumentException InvocationTargetExcep
  • idea插件开发入门

    前言 最近想研究一款自动在idea中定位缺陷及发送JIRA的快捷工具 方便提升报自动化脚本的bug的效率 因为idea插件学习是必不可少了 沉淀小结如下 idea插件开发入门 插件用途 工程创建 配置文件 Action实现 开发语法 常用对
  • js三种获取数组的最后一个元素的方法

    一 pop 方法 pop 方法 删除数组最后一个元素 并返回该元素 所以利用这个方法可以取到数组的最后一个 同理shift 可以取到数组的第一个元素 shift 删除数组第一个元素 并返回该元素 let arr 1 2 3 let ele
  • css background image size,html - css background image content size - Stack Overflow

    body margin 0 height 100vh top box text align center height 20 border 1px solid blue background red two area display inl
  • https http 重定向 302 303

    笔者在项目中曾经遇到过这样的情况 就是整个web应用使用的https协议 但是其中某一个表单提交单服务器端 服务器返回了一个重定向的响应 但是此时浏览器直接被拦截 没有做重定向处理 F12打开一看 是因为在https的请求中 混杂着http
  • 解决docker下载安装速度慢的问题

    1 进入etc docker 目录 root iZwz98nzsodcbigjqrrmxmZ cd etc docker 2 在该目录下新建daemon json文件 registry mirrors https docker mirror
  • git 查看远程分支在不同的终端看到的分支不同的解决方法

    多人协作开发的时候 有时候有很多分支 并且在有些分支在a电脑删除之后 在b电脑查看当前分支 居然还有那个被删除掉了的分支 git fetch prune origin 直接执行这行代码 之后再查看一下远程分支 git branch a a
  • SpringBoot在K8s下实现优雅停机

    在K8s中 当我们实现滚动升级之前 务必要实现应用级别的优雅停机 否则滚动升级时 还是会影响到业务 本文介绍SpringBoot应用实现优雅停机 此次教程基于SpringBoot 2 5 0 1 加入必要依赖
  • 简单理解常量、常量池、运行时常量池和字符串常量池

    1 常量 常量在java中就值的是一般的字面量 比如字符串 整数 浮点数等等数据 简单理解java中什么叫常量 2 常量池 也叫静态常量池或者class文件常量池 说常量池一定要指明是编译器产生的 它的组成为字面量和符号引用 3 运行时常量
  • 决策树模型——鸢尾花分类

    构建一个决策树分类模型 实现对鸢尾花的分类 1 lris数据集介绍 鸢尾花数据集是机器学习领域中非常经典的一个分类数据集 数据集全名为 Iris Data Set 总共包含150行数据 每一行由4个特征值及一个目标值 类别变量 组成 其中4
  • 先进API生产力工具eqable HTTP,一站式开发调试工具推荐

    简介 Reqable是什么 Regable Fiddler Charles Postman Reqable是HTTP一站式开发 调试国产化解决方案 拥有更便捷的体验 更先进的协议 更高效的性能和更精致的界面 Reqable是一款跨平台的专业
  • 【日常积累】HTTP和HTTPS的区别

    背景 在运维面试中 经常会遇到面试官提问http和https的区别 今天咱们先来简单了解一下 超文本传输协议HTTP被用于在Web浏览器和网站服务器之间传递信息 HTTP协议以明文方式发送内容 不提供任何方式的数据加密 如果攻击者截取了We