说下SSL/TLS四次握手过程?

参考自:
SSL/TLS四次握手过程是怎么样的?
HTTPS、SSL、TLS三者之间的联系和区别

一.SSL/TLS 简介

SSL(Secure Socket Layer 安全套接层)是基于 HTTPS 下的一个协议加密层,用于解决 HTTP 在传输数据时使用明文而导致的不安全问题。

  • SSL 是 HTTP 之下,TCP 之上的一个协议层,是基于 HTTP 标准并对 TCP 传输数据时进行加密,所以 HTTPS 可以想成是 HTTP+SSL 的简称。

  • HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信。

  • TLS 可以简单理解为 SSL 的升级版。在SSL更新到3.0时,IETF 对 SSL3.0 进行了标准化,标准化后的更名为TLS1.0(Transport Layer Security 安全传输层协议),可以说 TLS 就是SSL的新版本3.1,并同时发布"RFC2246-TLS加密协议详解",

    SSL/TLS

二、SSL/TLS四次握手过程
1. 客户端发出连接请求

客户端先向服务器发出加密通信的 ClientHello 请求。其向服务器提供下面信息:

  • 支持的协议版本,比如 TLS1.0 版本;
  • 支持的加密方法,比如 RSA 公钥加密;
  • 一个客户端生成的随机数(client random), 稍后用于生成对话密钥(session key)。随机数(client random) 客户端会保存,同时需要传送给服务端,随机数(client random) 需要跟服务端产生的随机数结合起来产生后面要讲到的 Master Secret。
2. 服务器回应

服务器收到客户端请求后,向客户端发出回应,这叫做 Serverhello。此步服务器主要做三件事:

  • 确认使用的加密通信协议版本,比如TLS1.00版本。如果游览器与服务器支持的版本不一致,服务器关闭加密通信;
  • 确认使用的加密方法(客户端所支持),比如RSA公钥加密;
  • 将服务器证书、非对称加密的公钥,以及**一个随机数(Server random)**发送给客户端
3. 客户端回应
(1) 客户端收到服务器回应以后,首先验证服务器证书

验证手段就是执行如下三种检查:

  • 检查证书是否已过期;
  • 检查证书中的域名与实际域名是否一致;
  • 检查证书是否是可信机构颁布的;

如果,上述过程中有任何一个环节发现问题,那么浏览器就会向访问者显示一个警告,由其选择是否还要继续通信。

(2) 验证完证书后处理

如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串新的随机数(Premaster secret ),并用证书中提供的公钥加密,发送给服务器。

此时,浏览器会根据前三次握手中的三个随机数:

  • Client random
  • Server random
  • Premaster secret

通过一定的算法来生成 "会话密钥" (Session Key) ,这个会话密钥就是接下来双方进行对称加密解密使用的密钥!

4. 服务端回应

服务端收到客户端的回复,利用已知的加密解密方式进行解密,服务器收到客户端的第三个随机数( Premaster secret) 之后,使用同样的算法计算出 "会话密钥" (Session Key)。

5. 握手完成后加密通信

整个握手阶段全部结束后,客户端与服务器进入加密通信,就完全是使用普通的 HTTP 协议,只不过用 "会话密钥" 加密内容。(非对称加密解密将不再使用,接下来完全由对称加密接手了,因为密钥已经安全的传送给了通信的双方)

三. 总结

SSL/TLS四次握手

  1. 客户端请求建立 SSL 链接,并向服务端发送一个随机数--Client random 和客户端支持的加密方法,比如RSA公钥加密,此时是明文传输。
  2. 服务端回复一种客户端支持的加密方法、一个随机数--Server random、授信的服务器证书和非对称加密的公钥。
  3. 客户端收到服务端的回复后利用服务端的公钥,加上新的随机数--Premaster secret 通过服务端下发的公钥及加密方法进行加密,发送给服务器。
  4. 服务端收到客户端的回复,利用已知的加解密方式进行解密,同时利用Client random、Server random和Premaster secret通过一定的算法生成HTTP链接数据传输的对称加密key -- session key。
相关推荐
2603_954708311 小时前
全维度容错设计,打造微电网安全运行屏障
服务器·网络·数据库·人工智能·分布式·安全
青岛前景互联信息技术有限公司2 小时前
以新标准为底座,前景互联打造高危场景智能接处警新体系
大数据·网络·人工智能
大飞记Python2 小时前
Linux命令速查手册(测试开发4年实战总结,附PDF)
linux·网络·pdf
AFinalStone2 小时前
Android 7系统网络(四)Native层(下)—netd Controller详解
android·网络
卖萌的斜阳2 小时前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
单片机·网络协议·tcp/ip
Sirius Wu2 小时前
OpenClaw(UpClaw)三层Tool全链路治理深度详解
网络·人工智能·架构·aigc
用户8334423966142 小时前
Qt6 实现 TCP/UDP/组播 透明中继抓包工具 | 流量录制回放 | 工业设备调试
网络协议
源图客2 小时前
云途物流API开发-鉴权认证(Java)
java·网络·python
huashengzsj3 小时前
Shopify个人建站如何搭建独立站:从零开始的完整指南
前端·网络·人工智能
云飞云共享云桌面4 小时前
单机建模卡顿运维繁琐!中小型机械制造厂云飞云 3D 云桌面落地
运维·服务器·网络·3d·自动化·电脑·负载均衡