你知道HTTP与HTTPS之间区别吗?

HTTP与HTTPS

  • 一、HTTP与HTTPS的区别
  • 二、HTTPS解决了HTTP的三大问题
    • 混合加密
    • 摘要算法
    • 数字证书
  • 三、SSL/TLS建立流程
    • 基本流程
    • 详细流程
      • 1.ClientHello
      • 2.ServerHello
      • 3.客户端回应
      • 4.服务器最后的回应

一、HTTP与HTTPS的区别

文字描述就可以看出HTTPS肯定是HTTP的升级版。

  • HTTP是明文传输,存在不安全问题。HTTPS则很好地解决了这个问题,在TCP和HTTP之间加入了SSL/TLS安全协议,使得报文能够加密传输。
  • HTTP连接的建立相对简单一些,只需要TCP的三次握手就可以进行HTTP的报文传输。HTTPS除了TCP的三次握手,还需要进行SSL/TLS的握手过程,才可以进行加密传输。
  • HTTP的端口是80,HTTPS是443。
  • HTTPS需要向CA (证书权威机构)申请数字证书,来确保服务器的身份是可信的。

二、HTTPS解决了HTTP的三大问题

HTTP存在的问题有

  • 窃听风险(明文传输)
  • 篡改风险(报文完整性无法控制)
  • 冒充风险(无法验证通信方的身份)

为此HTTPS在HTTP与TCP之间加入了SSL/TLS协议

  • 信息加密
  • 校验机制
  • 身份证书

混合加密

你知道HTTP与HTTPS之间区别吗?_第1张图片
HTTPS采用的时对称加密和非对称加密结合的混合加密方式

  • 通信建立前采用非对称加密的方式交换会话密钥
  • 通信过程中全部使用对称加密的会话密钥的方式加密明文数据

采用混合加密的原因

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

摘要算法

摘要算法用来实现完整性,使得数据拥有一个唯一标识,用于校验数据的完整性。
客户端在发送明文之前会通过摘要算法算出明文的唯一标识,发送的时候把唯一标识和明文⼀同加密成密文后,发送给服务器,服务器解密后,用相同的摘要算法算出发送过来的明⽂,通过比较客户端携带的唯一表示和当前算出的唯一标识做比较,若相同,则说明数据是完整的。
你知道HTTP与HTTPS之间区别吗?_第2张图片

数字证书

数字证书是为了保证公钥不被篡改和信任度,第三方权威机构CA(数字证书认证机构),将服务器公钥放在数字证书(由数字证书认证机构颁发)中,只要证书是可信的,公钥就是可信的。
你知道HTTP与HTTPS之间区别吗?_第3张图片

三、SSL/TLS建立流程

基本流程

  • 客户端向服务器索要并验证服务器的公钥
  • 双方协商生产会话密钥
  • 双方采用会话密钥进行加密通道

详细流程

1.ClientHello

首先,由客户端向服务器发起加密通道请求。
客户端主要向服务器发送以下信息

  • 客户端支持的SSL/TLS协议版本
  • 客户端产生的随机数(用于生产会话密钥)
  • 客户端支持的密码套件列表(如RSA加密算法)

2.ServerHello

服务器收到客户端请求,向客户端发出响应。
回应内容有

  • 确认SSL/TLS协议版本,如果不支持,则关闭加密通信
  • 服务器产生的随机数(用于生产会话密钥)
  • 确认的密码套件列表(如RSA加密算法)
  • 服务器的数字证书

3.客户端回应

客户端收到服务器回应之后,首先通过浏览器或者操作系统中的CA公钥,确认服务器数字证书的真实性,如果证书没有问题,客户端会从数字证书中取出服务器的公钥,然后使用它进行加密报文,向服务器发送如下信息

  • 一个随机数。该随机数会被服务器公钥加密
  • 加密通信算法改变通知:表示随后的信息都将用会话密钥加密通信
  • 客户端握手结束通知:表示客户端的握手阶段已经结束。这一项同时把之前所有的内容的发生的数据做个摘要,用来服务端校验

4.服务器最后的回应

服务器收到客户端的第三个随机数之后,通过协商的加密算法,计算出本次通信的会话密钥,然后向服务器发送最后的信息

  • 加密通信算法改变通知:表示随后的信息都将用会话密钥进行加密通信
  • 服务器握手结束通知,表示服务端端的握手阶段已经结束。这一项同时把之前所有的内容的发生的数据做个摘要,用来客户端校验

你可能感兴趣的:(图解网络,HTTP与HTTPS的区别,HTTPS是如何解决问题的,摘要算法,混合加密,SSL/TLS是如何建立的?)