HTTP与HTTPS的区别

HTTP 和 HTTPS 的区别(面试常考题)

HTTPS:是以安全为目标的 HTTP 通道,是 HTTP 的安全版。HTTPS 的安全基础是 SSL。SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。

HTTPS 设计目标:

(1) 数据保密性:保证数据内容在传输的过程中不会被第三方查看。就像快递员传递包裹一样,都进行了封装,别人无法获知里面装了什么 。

(2) 数据完整性:及时发现被第三方篡改的传输内容。就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收 。

(3) 身份校验安全性:保证数据到达用户期望的目的地。就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方,通过身份校验来确保送对了地方 。

二、HTTP 与 HTTPS 的区别
1、HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前的网易官网是http,而网易邮箱是 https 。)

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

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

4、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

HTTP1.0和HTTP2.0的区别

  1. 连接复用:
    HTTP1.0:每个HTTP请求都需要建立一个新的TCP连接,请求结束后立即关闭连接。这样的方式会导致每个请求都需要重新建立连接,增加了延迟和开销。
    HTTP2.0:引入了多路复用技术,允许在同一个TCP连接上并发发送多个请求和响应,避免了建立和关闭多个连接的开销,提高了性能和效率。

  2. 请求-响应方式:
    HTTP1.0:采用的是单向请求-响应模式,即每个请求只能对应一个响应,请求和响应是一一对应的关系。
    HTTP2.0:引入了Server Push机制,服务器可以在客户端请求之前主动推送相关资源,避免了客户端重复请求的等待时间,提高了页面加载速度。

  3. 头部压缩:
    HTTP1.0:每个请求和响应的头部都包含大量的重复信息,造成了较大的网络传输开销。
    HTTP2.0:使用了HPACK算法对头部进行压缩,减少了头部的大小,降低了网络传输开销。

  4. 二进制协议:
    HTTP1.0:采用文本形式进行数据传输,易于阅读和调试,但是传输效率较低。
    HTTP2.0:采用二进制格式传输数据,减少了解析的复杂性,提高了传输效率。

  5. 流控制和优先级:
    HTTP1.0:没有流控制和优先级的概念,所有请求都是按照发送的顺序进行处理。
    HTTP2.0:引入了流控制和优先级的机制,可以根据需求对请求进行优先级排序和流量控制,确保重要请求的及时处理。

  6. 长连接支持:
    HTTP1.0:基本上都是短连接,每个请求响应完成后立即关闭连接。
    HTTP2.0:支持长连接,即一个TCP连接可以承载多个请求和响应,减少了连接的建立和关闭次数,提高了性能。

SSL/TLS协议作用:认证用户和服务,加密数据,维护数据的完整性的应用层协议加密和解密需要两个不同的密钥,故被称为非对称加密;加密和解密都使用同一个密钥的 对称加密。 优点在于加密、解密效率
通常比较高HTTPS 是基于非对称加密的, 公钥是公开的,
(1)客户端向服务器端发起SSL连接请求;
(2) 服务器把公钥发送给客户端,并且服务器端保存着唯一的私钥
(3)客户端用公钥对双方通信的对称秘钥进行加密,并发送给服务器端
(4)服务器利用自己唯一的私钥对客户端发来的对称秘钥进行解密,
(5)进行数据传输,服务器和客户端双方用公有的相同的对称秘钥对数据进行加密解密,可以保证在数据收发过程中的安全,即是第三方获得数据包,也无法对其进行加密,解密和篡改。

混合加密

HTTPS 采用的是对称加密和非对称加密结合的「混合加密」方式:

在通信建立前采用非对称加密的方式交换「会话秘钥」,后续就不再使用非对称加密。
在通信过程中全部使用对称加密的「会话秘钥」的方式加密明文数据。
采用「混合加密」的方式的原因:

对称加密只使用一个密钥,运算速度快,但密钥必须保密,无法做到安全的密钥交换。
非对称加密使用两个密钥:公钥和私钥,公钥可以任意分发而私钥保密,解决了密钥交换问题但速度慢。

校验机制:摘要算法+数字签名

在发送内容前,对传输的内容进行摘要算法(哈希函数)计算,得到一个唯一且无法推导的哈希值,即内容的指纹,将哈希值与内容一同发送出去,在接收后再次进行哈希计算,校验哈希值,从而保证内容是完整且未被篡改的。

但是仍然无法保证内容和哈希值都被中间替换过,所以需要再使用私钥加密,公钥解密的非对称加密来解决。
在这里插入图片描述
数字证书
通过摘要算法,我们能保证数据的完整性;通过数字签名,我们能保证数据的来源一定是私钥持有者。
但是还缺少了身份验证环节,万一公私钥被替换过,校验仍然可以通过。所以需要对公私钥进行身份验证,HTTPS 规定只有权威机构能够颁发证书,而且拿到证书后也需要进行权威机构的认证。CA,Certification Authority,数字证书认证机构。数字证书的工作流程如下图所示。
在这里插入图片描述
在这里插入图片描述
TLS 建立连接的过程,就是客户端向服务器索要并验证 CA公钥,随后双方协商产生会话密钥的过程。
1、TCP三次握手
2、Client Hello
由客户端向服务器发起建立 TLS 请求,请求的内容包括以下等信息:
客户端支持的 SSL/TLS 协议版本。
客户端生产的随机数(Client Random),后面用于生成会话秘钥的条件之一。
客户端支持的加密套件列表,如 RSA 等加密算法。
3、Sever Hello
服务器收到客户端的建立请求后,向客户端发出响应,回应的内容包括以下等信息:
确认 SSL/ TLS 协议版本(如果浏览器不支持,则关闭加密通信)。
服务器生产的随机数(Server Random),也是后面用于生产会话秘钥的条件之一。
确认的加密套件。
服务器的数字证书。
4、校验数字证书
5、客户端回应
客户端会从数字证书中取出服务器的公钥,然后使用它加密报文,向服务器发送以下信息:
5.1 Client Key Exchange:基于前面提到的两个随机数(client random+server random),再生成第 3 个随机数 pre-master,然后通过CA证书中的公钥,对 pre-master 加密,得到 pre-master key,发送给服务器。
5.2 Change Cipher Spec:加密通信算法改变通知,表示客户端随后的信息都将用会话秘钥加密通信。
5.3 Encrypted handshake message:这一步对应的是 Cleint 的 Finish 消息,client 将前面握手的消息生成摘要,再用协商好的会话秘钥进行加密,这是客户端发出的第一条加密消息, 服务端接收后会用会话秘钥解密,能解出来说明前面协商的秘钥是一致的,至此客户端的握手完成。
会话密钥是用双方协商的加密算法和三个随机数:client random、server random、pre-master key 生成的。
6、服务器回应
服务器使用自己的 CA证书私钥对 pre-master key 解密得到 pre-master,再计算出会话密钥,随后向客户端发送以下信息:
6.1 Change Cipher Spec:加密通信算法改变通知,表示服务端随后的信息都将用会话秘钥加密通信。
6.2 Encrypted handshake message:这一步对应的是 Server 的 Finish 消息,服务端会将握手过程消息生成摘要,然后再用会话密钥加密,这是服务器发出的第一条加密消息,客户端接收后会用会话密钥解密,能解出来就说明协商成功。

7、TCP四次挥手

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值