关于HTTPS的加密流程详解

 更新时间:2023年07月17日 08:31:45   作者:Mᴇᴇᴛ ꦿ᭄.  
这篇文章主要介绍了关于HTTPS的加密流程详解,http是为了解决http存在的问题而在http基础上加入了SSL/TSL,在HTTP/2中TCP三次握手后会进入SSL/TSL握手,当SSL/TSL建立链接后,才会进行报文的传输,需要的朋友可以参考下

HTTPS加密

HTTPS的混合加密

我们知道加密方式有三种

  • 对称加密
  • 非对称加密
  • 混合加密

HTTPS采用的就是对称加密和非对称加密的混合加密方法。

  • 混合加密解决了信息的机密性,防止数据被窃听
  • 摘要算法实现了数据的完成性,防止了数据被篡改
  • 数字证书提供了身份验证,防止了被冒充风险

在通信建立前采用非对称加密的方式交换「会话秘钥」,后续就不再使用非对称加密。

在通信过程中全部使用对称加密的「会话秘钥」的方式加密明文数据。

采用「混合加密」的方式的原因:

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

HTTPS  是如何建立连接的?

SSL/TLS 协议基本流程:

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

前两步也就是 SSL/TLS 的建立过程,也就是握手阶段。

SSL/TLS 的「握手阶段」涉及四次通信,可见下图:

SSL/TLS 协议建立的详细流程:

1. ClientHello

首先,由客户端向服务器发起加密通信请求,也就是 ClientHello 请求。

在这一步,客户端主要向服务器发送以下信息:

(1)客户端支持的 SSL/TLS 协议版本,如 TLS 1.2 版本。

(2)客户端生产的随机数(Client Random),后面用于生产「会话秘钥」。

(3)客户端支持的密码套件列表,如 RSA 加密算法。

2. SeverHello

服务器收到客户端请求后,向客户端发出响应,也就是 SeverHello。服务器回应的内容有如下内容:

(1)确认 SSL/ TLS 协议版本,如果浏览器不支持,则关闭加密通信。

(2)服务器生产的随机数(Server Random),后面用于生产「会话秘钥」。

(3)确认的密码套件列表,如 RSA 加密算法。

(4)服务器的数字证书。

3.客户端回应

客户端收到服务器的回应之后,首先通过浏览器或者操作系统中的 CA 公钥,确认服务器的数字证书的真实性。

如果证书没有问题,客户端会从数字证书中取出服务器的公钥,然后使用它加密报文,向服务器发送如下信息:

(1)一个随机数(pre-master key)。该随机数会被服务器公钥加密。

(2)加密通信算法改变通知,表示随后的信息都将用「会话秘钥」加密通信。

(3)客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时把之前所有内容的发生的数据做个摘要,用来供服务端校验。

上面第一项的随机数是整个握手阶段的第三个随机数,这样服务器和客户端就同时有三个随机数,接着就用双方协商的加密算法,各自生成本次通信的「会话秘钥」。

4. 服务器的最后回应

服务器收到客户端的第三个随机数(pre-master key)之后,通过协商的加密算法,计算出本次通信的「会话秘钥」。然后,向客户端发生最后的信息:

(1)加密通信算法改变通知,表示随后的信息都将用「会话秘钥」加密通信。

(2)服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时把之前所有内容的发生的数据做个摘要,用来供客户端校验。

至此,整个 SSL/TLS 的握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的 HTTP 协议,只不过用「会话秘钥」加密内容。

到此这篇关于关于HTTPS的加密流程详解的文章就介绍到这了,更多相关HTTPS的加密流程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • win7/win10+vs2015+pcl1.8.0配置方案详解

    win7/win10+vs2015+pcl1.8.0配置方案详解

    这篇文章主要介绍了win7/win10+vs2015+pcl1.8.0详细配置方案,本文通过图文并茂的形式给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 在地址栏里显示logo的实现方法

    在地址栏里显示logo的实现方法

    在地址栏里显示logo,其实大家可以看一些网站的头部里面,下面的方法讲的更仔细。
    2009-02-02
  • 如何用idea+gitee来团队合作开发项目的教程

    如何用idea+gitee来团队合作开发项目的教程

    这篇文章主要介绍了如何用idea+gitee来团队合作开发项目,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Windows 版本Git命令行的使用详解

    Windows 版本Git命令行的使用详解

    这篇文章主要介绍了Windows 版本Git命令行的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • git如何使用Sourcetree合并多次本地提交记录

    git如何使用Sourcetree合并多次本地提交记录

    这篇文章主要介绍了git如何使用Sourcetree合并多次本地提交记录,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 使用idea 去除 html 代码前的行号和空行的方法详解

    使用idea 去除 html 代码前的行号和空行的方法详解

    这篇文章主要介绍了使用idea 去除 html 代码前的行号和空行,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 基于Leaflet的VideoOverlay视频图层叠加实战教程

    基于Leaflet的VideoOverlay视频图层叠加实战教程

    这篇文章主要介绍了基于Leaflet的VideoOverlay视频图层叠加实战,本文首先介绍了DistortableVideo组件的相关知识,它的github仓库信息,相关源代码的目录说明,使用依赖信息,需要的朋友可以参考下
    2023-02-02
  • 详解Visual Studio中Git的简单使用

    详解Visual Studio中Git的简单使用

    这篇文章主要介绍了Visual Studio中Git的简单使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 关于VSCode 装好ESLint 插件 import 报黄线的问题

    关于VSCode 装好ESLint 插件 import 报黄线的问题

    这篇文章主要介绍了VSCode 装好ESLint 插件 import 报黄线的问题,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 详解Git建立本地仓库的两种方法

    详解Git建立本地仓库的两种方法

    这篇文章主要介绍了详解Git建立本地仓库的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08

最新评论