从HTTP到HTTPS:网站安全通信的演进之路

2023-09-17 22:09:00

        HTTP协议与TCP/IP协议族内的其他协议相同部分,用于客户端和服务器端的通信。下面来看一下HTTP具体是怎么工作的。

1、HTTP前生今世

  在HHTP/0.9版本,主要是通过确立了客户端请求、服务器端响应的通信流程来解决HTML文件传输,只能获取文本资源。HTTP/1.0是一个简单的文本协议,通过设立头部字段来解决不同文件类型的传输。HTTP/1.1是目前互联网上使用最广泛的协议,通过建立长连接进行复用来解决创建和断开TCP连接开销大的问题。功能也非常完善。HTTP/2基于Google的SPDY协议,通过二进制分帧来解决并发数有限的问题,更加注重性能的改善,但是还未普及。HTTP/3基于Google的QUIC协议,采用UDP协议解决TCP丢包阻塞的问题,是将来的发展方向。

2、HTTP报文是什么样子的

HTT协议的请求报文和响应报文的结构基本相同,有三大部分:

  1. 起始行(start line):描述请求或响应的基本信息;
  2. 头部字段集合(header):实用key-value的形式更详细的说明报文
  3. 消息正文(entity):实际传播的数据,不一定是纯文本,可以试图片,视频等二进制数据

 ‘请求头’/‘响应头’:起始行+头部字段集合

‘body’’:实体、消息正文

3、HTTP 的请求方法

  • HTTP1.0定义了三种请求方法:GET、POST和HEAD方法
  • HTTP1.1新增了五种请求方法:OPTION,PUT,DELETE,TRACE和CONNECT

HTTP1.1规定了以下请求方法:

  1. GET:请求获取Request-URI所标识的资源
  2. POST:在Request-URI所标识的资源后附加新的数据
  3. HEAD:请求获取由Request-URI所标识的资源的响应消息报头
  4. PUT:请求服务器存储一个资源。并用Requeest-URI作为其标识(修改数据)
  5. DELET:请求服务器删除对应所标识的资源
  6. TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
  7. CONNECT:建立连接隧道,用于代理服务器
  8. OPTIONS:列出可对资源实行的请求方法,用来跨域请求

4、常见的HTTP请求头和响应头

  • HTTP Request Header常见的请求头:
  1. Accept:浏览器能够处理的内容信息
  2. Accept-Charset:浏览器能够显示的字符集
  3. Accept-Language:浏览器当前设置的语言
  4. Connection:浏览器与服务器之间连接的类型
  5. Cookie:当前页面设置的任何Cookie
  6. Host:发出请求的页面所在的域
  7. Referer:发出请求的URL
  8. User-Agent:浏览器的用户代理字符串
  • HTTP Response Header常见的响应头:
  1. Data:表示消息发送时间,时间的描述格式有rfc822定义
  2. server:服务器名称
  3. Connection:浏览器与服务器之间连接的类型
  4. Cache-Control:控制浏览器缓存
  5. content-type:表示后面的文档属于什么MIME类型的con

常见的Content-Type属性值有以下四种:

  1. application/x-222-form-urlencoded:浏览器的原生form表单,如果不设置enctype属性,那么最终就会以application/x-www-form-urlencoded方式提交数据。该种方式提交的数据放在body里面,数据按照key1=val1&key2=val2的方式进行编码,key和val都进行了URL转码。
  2. multipart/form-data:该种方式也是一个常见的POST提交方式,通常表单上传文件时使用改种方式。
  3. application/json:服务器消息主体是序列化后的JSON字符串。
  4. text/xml:该种方式主要用来提交XML格式数据。

5、HTTP协议的优缺点

   HTTP是一种超文本传输协议,是一个在计算机世界里专门在两点之间传输文字、图视频等超文本数据的预定和规范。

  • ​​​​   HTTP特点
  1. 灵活可扩展。一个语法只规定了基本格式,空格分隔单词,换行分隔字段等。另外一个就是传输形式上不仅可以传输文本,还可以传输图片,视频等任意数据。
  2. 请求-应答模式。通常是一方发送消息,另一方要接受消息。
  3. 可靠传输,HTTP是基于TCP/IP,因此把这一特性继承下来了。
  4. 无状态,这个分场景回答即可。
  • HTTP缺点
  1. 无状态。有时候需要保存信息,比如像购物系统,需要保留顾客信息等等,另一方面,有时候,无状态也会减少网络开县,比如类似直播行业这样子等,分各种场景。
  2. 明文传输,即协议里的报文(主要指的是头部)不使用二进制数据,而是文本形式。这让报文信息暴露给了外界,给攻击者带来了遍历。
  3. 队头阻塞。当HTTP开启长连接时候,共用一个TCP连接,当某个请求时间过长时候,其他的请求只能处于阻塞状态,这就是队头阻塞问题。

6、HTTPS和HTTP区别

        HTTPS要比HTTP多了secure安全性这个概念,实际上,HTTPS并不是一个新的协议层,其实就是HTTP+TLS/SSL协议组合而成,而安全性的保证正式SSL/TLS所做的工作。

  • SSL:安全套接层(Secure Sockets Layer)
  • TLS:传输层安全(Transport Layer Security):现在主流TLS/1.2,之前的TLS1.0、TLS1.1都被认为是不安全的,在不就的将来会被完全淘汰

区别:

  1. HTTP是明文传输。HTTPS是由SSL由SSL+HTTP协议构建的可进行加密传输,身份认证的网络协议,比HTTP协议安全
  2. HTTPS比HTTP更加安全,对搜索引擎更加友好,利于SEO,谷歌、百度有索引HTTPS网页。
  3. HTTPS标准端口443,HTTP标准端口80
  4. HTTPS需要用到SSL证书,而HTTP不用

HTTPS总结为两点:

        对数据进行了加密,并建立一个信息安全通道来保证传输过程中的数据安全

        对网站服务器进行真实身份认证

HTTPS的缺点:

  • 证书费用以及更新维护
  • HTTPS降低一定用户访问速度
  • 消耗CPU,需要增加大量机器

7、HTTPS工作原理

首先HTTPS可以理解成HTTP+SSL/TLS

        TLS/SSL的功能实现主要依赖于三类基本算法:散列函数、对称加密和非对称加密。利用非对称加密实现身份认证也秘钥协商,对称加密算法采用协商的秘钥对数据进行加密,基于散列函数验证信息的完整性。

  • 对称加密

加密和解密使用统一个秘钥进行加密的方式叫做对称加密,但是客户端和服务器端公用同一套秘钥同时也会存在一定的问题如下。

  1. WWW万维网有许许多多的客户端,不可能都用密钥a进行信息加密,所以只能一个客户端一个密钥
  2. 不同客户端不同密钥,但是密钥如何传传输?解决办法是一端生成一个密钥,然后通过HTTP传输给另一端,那么这样子又产生新的问题
  3. 传输密钥的过程如何进行加密?如果中间人拦截,密钥也会被获取

所以我们需要非对称加密的方式

  • 非对称加密

        非对称加密采用的算法是RSA,所以在一些文章中也会看见传统的RSA握手,基于现在TLS主流版本是1.2,所以接下来梳理的是TLS/1.2握手过程。 

  1. 有一对秘钥,公钥和私钥
  2. 公钥加密的内容只有私钥可以解开,私钥加密的内容所有的公钥都能解开,这里说的公钥都可以解开是指一对密钥。
  3. 公钥可以发送给所有的客户端,私钥只保存在服务器端
  • 主要工作流程

TLS1.2握手过程主要分为舞步五步

  1.  客户端发起一个HTTPS请求,链接443端口。这个过程可以理解成式请求公钥的过程
  2. 服务器端收到请求后,通过第三方机构私钥加密,会把数字证书(也可以理解为公钥证书)发送给客户端
  3. 浏览器安装后会自带一些权威第三方机构公钥吗,使用匹配的公钥对数字签名进行解密。根据数字签名生成的规则对网站信息进行本地签名生成,然后两者对比。对比两者匹配成功则说明认证通过获得证书,不匹配则获取证书失败。
  4. 在客户端拿到认证通过的数字服务器公钥之后,客户端随机生成一个对称密钥,使用服务器公钥加密这个对称密钥,发送给服务器
  5. 服务器通过自己的私钥对信息进行解密。得到了对称密钥,英雌两者都拥有了相同的对称密钥

但是如果公钥被中间人拿到篡改怎么办呢?如下图所示

  • 第三方认证

因为客户端无法识别公钥是中间人还是服务器端的,为了解决这个问题,可以通过某种规范让客户端和服务器端都遵循某种约定?那就是第三方认证的方式

在HTTPS通过签名+证书的方式来解决中间攻击的。

        我们再次假设中间人截取到服务器的公钥后,去替换成自己的公钥,因为有数字签名的存在,这样子客户端验证发现数字签名不匹配,这样子就放置中间人替换公钥的问题。

参考:

前端进阶之旅

前端面试题汇总

更多推荐

输电线路故障诊断(Python代码,逻辑回归、决策树、随机森林、XGBoost和支持向量机五种不同方法诊断)

效果视频:输电线路故障诊断(Python代码,逻辑回归、决策树、随机森林、XGBoost和支持向量机五种不同方法诊断)_哔哩哔哩_bilibili项目文件code.py装载的是英文版本,图上显示英文标签及坐标,Chinese.py装载的是中文版本,图上显示中文标签等等,以及每一行代码几乎都有中文注释。code.py和C

【学习笔记】POJ 3834 graph game

点这里结论题😅,图一乐结论:如果原图中存在两个边集不交的生成树,那么Bob\text{Bob}Bob必胜;否则Alice\text{Alice}Alice必胜证明有点难😅首先,考虑维护两颗不存在红边的生成树,如果Alice\text{Alice}Alice断掉了其中一颗树上的一条边,将这个树分成两个连通块,那么Bo

求函数f(x,y)在曲线C上的最大方向导数问题

方向导数:在许多问题中,不仅要知道函数在坐标轴方向上的变化率(即偏导数),而且要设法求得函数在某点沿着其他特定方向上的变化率,这就是方向导数方向导数的定义式和计算公式定义式:前提:三元函数u=u(x,y,z)u=u(x,y,z)u=u(x,y,z)在点P0(x0,y0,z0)P_0(x_0,y_0,z_0)P0​(x0

2023华为杯研究生数学建模D题思路代码分析

完整的分析查看文末名片获取!问题一:区域碳排放量以及经济、人口、能源消费量的现状分析(1)建立指标与指标体系要求1:指标能够描述某区域经济、人口、能源消费量和碳排放量的状况;要求2:指标能够描述各部门(能源供应部门、工业消费部门、建筑消费部门、交通消费部门、居民生活消费、农林消费部门)的碳排放状况;要求3:指标体系能够

命令模式简介

概念:命令模式是一种行为设计模式,它将请求封装成一个对象,从而允许您将不同的请求参数化、队列化,并且能够在不同的时间点执行。通过引入命令对象(Command)来解耦发送者(Invoker)和接收者(Receiver),使得发送者无需知道具体的接收者或操作细节。命令对象封装了一系列操作,并提供了一个统一的方法(如exec

Delaunay三角剖分算法

目录一.简介1.1三角剖分1.2Delaunay三角剖分二.Delaunay三角剖分的相关理论2.1Delaunay三角形和(局部)Delaunay边的概念2.2Delaunay引理2.3翻转边算法(flipalgorithm)2.4Delaunay三角剖分的最优性质三.Delaunay三角剖分的构造算法3.1Laws

什么是JavaScript中的IIFE(Immediately Invoked Function Expression)?它的作用是什么?

聚沙成塔·每天进步一点点⭐专栏简介⭐JavaScript中的IIFE⭐示例⭐写在最后⭐专栏简介前端入门之旅:探索Web开发的奇妙世界欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而

【Linux从入门到精通】多线程 | 线程介绍&线程控制

本篇文章主要对线程的概念和线程的控制进行了讲解。其中我们再次对进程概念理解。同时对比了进程和线程的区别。希望本篇文章会对你有所帮助。文章目录一、线程概念1、1什么是线程1、2再次理解进程概念1、3轻量级进程二、进程控制2、1创建线程pthread_create2、2线程与进程资源2、3线程id2、4获得线程idpthr

小米华为,化干戈为玉帛!

近日来,手机圈又掀起了各大厂家推出新品的高潮。首先是华为Mate60的推出,其自研的麒麟9000S芯片瞬间点燃了国内手机市场,得到了国内甚至国外业界人士的认可和好评。而近日网上盛传的小米创始人雷军的“愿意加入华为技术生态圈”的邀请,引起了网友们的高度关注。截图自今日头条@刘哥抖料大家都知道,小米采用的是高通芯片和谷歌操

代码签名证书品牌哪家好?选微软推荐机构

代码签名证书是保护软件代码完整性及来源可信的重要方式,软件程序要在操作系统中运行,就需要使用权威合规的代码签名证书,对软件代码进行数字签名,确保软件来源可信、未被非法篡改,消除操作系统“未知发布者”警告,让软件能够顺畅运行。众多代码签名证书厂商中,哪些厂商提供的代码签名证书才是获得操作系统信任的呢?本文将为大家介绍,如

【JVM】类加载器

类与类加载器类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远超类加载阶段。对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。这句话可以表达得更通俗一些:比较两个类是否“相等”,只有在这两个类是由同一个类加载器加

热文推荐