TLS(Transport Layer Security,传输层安全协议)三次握手
TLS(Transport Layer Security,传输层安全协议)三次握手是建立安全层通信的一个过程,它确保了数据在两个通信实体之间的传输是加密和身份验证的。TLS 是一种安全协议,通常用于在网络中传输数据时提供保密性和数据完整性保护。TLS 也可以用作其他协议的底层安全层,例如 HTTPS(超文本传输安全协议)是 HTTP 协议的安全版本,它使用了 TLS/SSL 协议进行数据传输。
TLS 三次握手过程如下:
-
客户端 Hello(ClientHello):
- 客户端开始建立连接,发送一个 ClientHello 消息给服务器。这个消息包括客户端支持的 TLS 版本、一个客户端生成的随机数(ClientRandom),以及客户端支持的加密套件列表(cipher suites)。
- 客户端还可能会请求服务器的证书,以及其它与安全相关的信息。
-
服务器 Hello(ServerHello):
- 服务器收到 ClientHello 消息后,会从客户端提供的加密套件列表中选择一个加密算法,并在 ServerHello 消息中通知客户端。
- 服务器也会生成一个随机数(ServerRandom),并把自己的证书(包含公钥)发送给客户端。如果服务器需要对客户端进行身份验证,它也可以发送一个证书请求。
-
客户端验证(Client Verification):
- 客户端收到服务器的证书后,会验证其有效性(例如,检查证书是否过期,是否由受信任的证书颁发机构签发等)。
- 客户端会生成第三个随机数(ClientVerifyRandom),并使用服务器的公钥加密这个随机数,然后将加密后的数据发送给服务器(Pre-Master Secret)。
- 如果服务器请求了客户端证书,客户端也会发送自己的证书。
-
服务器完成(Server Finished):
- 服务器使用自己的私钥解密收到的 Pre-Master Secret。
- 服务器和客户端都将使用 ClientRandom、ServerRandom 和 ClientVerifyRandom 这三个随机数,通过一定的算法生成相同的会话密钥(Session Key)。
- 服务器发送 Finished 消息给客户端,这个消息是使用新生成的会话密钥加密的。
-
客户端完成(Client Finished):
- 客户端收到服务器的 Finished 消息后,使用会话密钥解密,并验证消息的正确性。
- 客户端也发送一个 Finished 消息给服务器,同样使用会话密钥加密。
完成以上步骤后,客户端和服务器就建立了一个安全的连接,可以开始安全地传输数据。需要注意的是,TLS 协议中的 “三次握手” 与 TCP 协议的三次握手是不同的概念。TLS 的三次握手是指在 TLS 密钥交换过程中的步骤,而 TCP 的三次握手是指在建立一个可靠的传输层连接的过程中的步骤。
本文由 note.batype.com 导入。
相关文章
- HTTP 详解
HTTP(Hypertext Transfer Protocol)是一种用于在网络上传输超文本数据的协议。它是一种客户端 - 服务器协议,客户端发送请求,服务器返回响应。HTTP 是 Web 的基础,
- HTTP 请求流程
HTTP 是一种允许浏览器向服务器获取资源的协议,是 Web 的基础,通常由浏览器发起请求,用来获取不同类型的文件,例如 HTML 文件、CSS 文件、JavaScript 文件、图片、视频等。此外,
- 导航流程:从输入 URL 到页面展示,这中间发生了什么?
“在浏览器里,从输入 URL 到页面展示,这中间发生了什么?” 这是一道经典的面试题,能比较全面地考察应聘者知识的掌握程度,其中涉及到了网络、操作系统、Web 等一系列的知识。所以我在面试应聘者时也必