面试高频:HTTPS 通信流程

更多大厂面试内容可见 -> http://11come.cn

面试高频:HTTPS 通信流程

HTTPS 的加密流程

接下来说一下 HTTPS 协议是如何进行通信的:

HTTPS 通信使用的 对称加密 + 非对称加密 两者结合的算法

HTTPS 通信时,会先使用 非对称加密 让通信双方都拿到一个 对称密钥 ,之后双方通过这个 对称密钥 进行加密通信,通信过程使用的就是 对称加密

为什么要使用两种加密算法的结合呢?

  • 对称加密:加密解密过程中使用相同的密钥,速度很快,但是如何让双方都安全的拿到这个密钥比较困难(因此和非对称加密结合,来安全的传输这个对称密钥)
  • 非对称加密:加密解密过程中使用一对密钥,即公钥和私钥。公钥是公开的,用于加密;私钥只能自己拿到,用于解密,整个过程相对复杂,比较耗时,一般用于密钥的交换

通过了解这两种算法的区别,也就知道了为什么要使用这两种算法的结合了,HTTPS 既想要对称加密的性能,又想要非对称加密的安全性!

HTTPS 建立连接的流程

HTTPS 是基于 HTTP 协议,添加了 SSL 层来保证了数据传输的可靠性

HTTPS 的通信流程用大白话说的话,总共有 3 个步骤,如下:

1、客户端向服务器请求获取 公钥

2、双方协商产生 对称密钥

3、双方采用 对称密钥 进行加密通信

前两个步骤是建立 SSL/TLS 的过程,HTTPS 是基于 SSL 或 TLS 进行加密的,不过 SSL 已经退出历史舞台了,现在说的 HTTPS 其实就是 HTTP+TLS

使用 HTTPS 通信的话,通信双方先建立 HTTP 通信,也就是通过 TCP 三次握手建立 TCP 连接,之后再进行 TLS 握手 进行 HTTPS 加密通信

那么 TLS 握手的过程总共包含了 4 次通信 ,在 4 次通信之后,TLS 协议也就建立成功了,可以进行 HTTPS 通信了,TLS 握手过程中的 4 次通信如下:

1、第一次通信 ClientHello :客户端向服务端发送加密请求,主要是协商 TLS 版本、随机数(生成后续的对称密钥)

2、第二次通信 ServerHello :服务端向客户端回复,主要协商 TLS 版本、随机数(生成后续的对称密钥)、数字证书(包含公钥)

3、第三次通信 客户端回应 :取出数字证书的公钥,将用于通信的 对称密钥 通过公钥加密发送给服务端

4、第四次通信 服务端最后回应 :使用自己本地的密钥进行解密,得到用于通信的 对称密钥

通过 TLS 握手阶段,双方就可以拿到对称密钥,之后双方就可以使用这个 对称密钥 进行加密通信了

数字证书

这里再补充一下关于数字证书相关的内容

数字证书是由一个双方都信任的第三方机构签发,这个机构就是 CA (Certificate Authority,证书认证机构)

在 TLS 握手的时候,客户端第一次向服务端发起加密请求,此时服务端就会向 CA 申请数字证书,再把数字证书发送给客户端

客户端收到服务端发来的 数字证书 之后,此时客户端并不知道这个数字证书是否合法,万一在传输过程中被篡改了呢?

因此客户端会将 根证书 提前预装在系统内部,当客户端收到数字证书之后,根据本地的根证书去校验这个数字证书是否合法,如果合法的话,客户端拿到证书内部的公钥,就可以使用这个公钥加密信息发送给服务端了,双方在这个过程中通过非对称加密来协商一个对称密钥,之后使用对称密钥进行加密传输即可

数字证书中包含的内容:持有者的公钥、用途、颁发者、有效时间等信息

签发证书的流程如下:

相关推荐
胡萝卜术3 小时前
力扣5. 最长回文子串
前端·javascript·面试
触底反弹5 小时前
🔥 从零搭建 RAG 知识库:爬虫→分词→向量化→检索,一步都不能错
javascript·人工智能·面试
ychqsq9 小时前
88.归途
经验分享·职场和发展
TlSfoward9 小时前
TLSFOWARD TLS指纹
开发语言·数据库·爬虫·搜索引擎·https·php
CoderYanger13 小时前
A.每日一题:3020. 子集中元素的最大数量
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
lvchaoq14 小时前
this指向面试代码输出题目合集
javascript·面试·职场和发展
wuqingshun31415915 小时前
MySQL 如何解决深度分页问题?
java·mysql·面试
weixin_7275356216 小时前
JVM 常见八股面试问答:深入底层原理
jvm·面试·职场和发展
想吃火锅100516 小时前
【leetcode】5.最长回文子串js
算法·leetcode·职场和发展
Tsuki_tl16 小时前
【面试高频】HTTPS加密传输过程
http·https·非对称加密·数字证书·对称加密·ca证书·中间人攻击