百科网站建设济南企业型网站
2026/5/21 12:27:18 网站建设 项目流程
百科网站建设,济南企业型网站,重庆做网站电话,企业形象包装公司HTTPS 是应⽤层协议#xff0c;需要先完成 TCP 连接建⽴#xff0c;然后⾛ TLS 握⼿过程后#xff0c;才能建⽴信信安全的连接HTTPS HTTP SSL/TLS。 HTTPS 的本质是在 HTTP 协议之上增加了一个安全层#xff0c;这个安全层最初由 SSL 协议实现#xff0c;后来演进为更安…HTTPS 是应⽤层协议需要先完成 TCP 连接建⽴然后⾛ TLS 握⼿过程后才能建⽴信信安全的连接HTTPS HTTP SSL/TLS。 HTTPS 的本质是在 HTTP 协议之上增加了一个安全层这个安全层最初由 SSL 协议实现后来演进为更安全的 TLS 协议。SSL 是 TLS 的前身。 TLS 是 SSL 的标准化、更安全的升级版。SSL 已经因为安全漏洞而被彻底废弃。出于习惯和兼容性人们包括很多开发者仍然会混用 “SSL” 和 “TLS”甚至在技术文档中看到 “SSL/TLS” 的写法。但在技术层面我们应该使用“TLS”。RSA握手过程传统的 TLS 握手基本都是使用 RSA 算法来实现密钥交换的在将 TLS 证书部署服务端时证书文件中包含一对公私钥其中公钥会在 TLS 握手阶段传递给客户端私钥则一直留在服务端一定要确保私钥不能被窃取。在 RSA 密钥协商算法中客户端会生成随机密钥并使用服务端的公钥加密后再传给服务端。根据非对称加密算法公钥加密的消息仅能通过私钥解密这样服务端解密后双方就得到了相同的密钥再用它加密应用消息。好的我们来详细讲解一下 TLS 四次握手。这其实是 TLS 协议建立安全连接的核心过程通常被称为TLS 握手协议。为了更直观我们先看一张经典的流程图然后分步骤拆解ServerClientServerClientTLS Handshake (Simplified - RSA Key Exchange Example)验证证书提取公钥安全连接建立开始加密通信ClientHello (Random_C, Cipher Suites, Extensions)ServerHello (Random_S, Selected Cipher Suite)Server CertificateServerHelloDoneClientKeyExchange (Encrypted Premaster Secret)ChangeCipherSpecFinished (Encrypted)ChangeCipherSpecFinished (Encrypted)上图展示了最经典的RSA 密钥交换流程。下面我们对每一步进行详细解释。TLS 四次握手详解“四次握手”指的是在建立 TCP 连接后为了建立 TLS 安全层客户端和服务器之间主要进行四轮消息交换并非严格意义上的4条消息而是4个来回的数据包组。第一阶段ClientHello发起方 客户端目的 向服务器发起加密通信请求并告知自身的能力和偏好。主要内容客户端随机数 (Client Random) 一个由客户端生成的随机数用于后续生成主密钥。支持的协议版本 如 TLS 1.2 或 TLS 1.3。支持的密码套件列表 按优先级排列。一个密码套件定义了后续将使用的密钥交换算法、批量加密算法和消息认证码算法。例如TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256。支持的压缩方法。会话ID 用于恢复之前的会话会话恢复。扩展字段 如服务器名称指示 (SNI)用于虚拟主机。第二阶段ServerHello Server Certificate ServerHelloDone发起方 服务器目的 响应客户端确定通信参数并证明自己的身份。包含多条消息ServerHello服务器随机数 (Server Random) 服务器生成的随机数同样用于后续生成主密钥。选定的协议版本 从客户端支持的版本中选择。选定的密码套件 从客户端提供的列表中选择一个。会话ID 如果支持会话恢复会提供新的或旧的会话ID。Server Certificate服务器的数字证书。这个证书由受信任的证书颁发机构 (CA) 签发包含了服务器的公钥、域名等信息。客户端会用预置的 CA 根证书来验证这个证书的合法性从而确认服务器的身份并获取其公钥。ServerKeyExchange(可选) 如果选定的密码套件需要例如使用DHE或ECDHE这种前向安全的密钥交换算法服务器会发送自己的临时公钥参数。这是实现前向安全的关键。CertificateRequest(可选) 如果服务器需要验证客户端身份双向认证会请求客户端证书。ServerHelloDone通知客户端服务器这边的初始协商消息已发送完毕。关键点至此客户端已经拥有了Client Random、Server Random并通过证书获得了服务器的公钥或临时公钥参数。第三阶段Client Key Exchange Change Cipher Spec Finished发起方 客户端目的 进行密钥交换并切换到加密模式验证握手过程是否完整和未被篡改。包含多条消息Client Certificate(可选) 如果服务器要求客户端发送自己的证书。ClientKeyExchange这是密钥交换的核心。根据之前协商的算法内容不同RSA 密钥交换 客户端生成一个预备主密钥 (Premaster Secret)并用服务器证书中的公钥加密发送给服务器。DHE/ECDHE 密钥交换 客户端使用服务器传来的参数生成自己的临时公钥发送给服务器。双方随后使用迪菲-赫尔曼算法在不传输 Premaster Secret 的情况下各自计算出一个相同的 Premaster Secret。CertificateVerify(可选) 如果发送了客户端证书用私钥签名一段数据供服务器验证。ChangeCipherSpec一个简单的协议通知服务器“我后面的消息都要用我们刚协商好的加密算法和密钥来加密了”。Finished这是握手过程中第一条被加密的消息它包含一个特殊的消息认证码 (MAC)是对之前所有握手消息的摘要并用刚刚生成的主密钥加密后发送。服务器解密并验证这个 MAC可以确保整个握手过程没有被篡改防中间人攻击且密钥协商正确。关键点此时客户端和服务器都拥有了Client Random、Server Random和Premaster Secret。双方用这三个参数通过一个伪随机函数 (PRF) 计算出相同的主密钥 (Master Secret)。主密钥再进一步派生出用于实际加密数据的会话密钥如对称加密密钥、MAC 密钥等。第四阶段Change Cipher Spec Finished发起方 服务器目的 切换到加密模式并确认握手完成。包含消息ChangeCipherSpec服务器回应客户端“好的我也切换到加密模式了”。Finished服务器也发送自己的加密 Finished 消息。客户端对其进行验证。握手完成至此TLS 四次握手全部完成。双方已协商了加密算法等参数。验证了服务器和/或客户端的身份。安全地交换/生成了共享的会话密钥。确认了握手过程的完整性。接下来应用程序数据HTTP、FTP等将使用协商好的会话密钥进行加密传输。重要补充TLS 1.3 的简化TLS 1.3 对握手过程做了革命性简化将传统的“四次握手”减少到了“一次往返” (1-RTT)有时甚至“零往返” (0-RTT)。核心变化是客户端在ClientHello中就“猜测”服务器可能支持的密钥交换参数并发送自己的公钥。服务器在ServerHello中确认参数并发送证书和自己的公钥紧接着就可以发送Finished消息。客户端验证后回复Finished。这大大提升了连接速度。我们通常说的“四次握手”更多是指 TLS 1.2 及之前的经典模式。总结步骤主要消息核心目的第一次ClientHello客户端说“我想加密通信我支持这些算法。”第二次ServerHello, Certificate, ServerHelloDone服务器说“我们用这个算法这是我的身份证证书。”第三次ClientKeyExchange, ChangeCipherSpec, Finished客户端说“这是我的密钥材料我切换加密了这是校验码。”第四次ChangeCipherSpec, Finished服务器说“我也切换加密了这是我的校验码。”这个过程完美融合了非对称加密用于身份认证和密钥交换和对称加密用于高效加密应用数据的优势并引入了随机数和消息认证来防止重放和篡改攻击是网络安全通信的基石。TLS 1.2握手的时间线分析让我们重新从RTT往返时间角度分析握手过程第一轮往返协商参数客户端 → 服务器ClientHello开始第一个RTT计时服务器 → 客户端ServerHello、Certificate、ServerHelloDone第一个RTT结束这不是完整的四次而是第一轮往返。客户端发出Hello服务器回应。第二轮往返密钥交换客户端 → 服务器ClientKeyExchange、ChangeCipherSpec、Finished开始第二个RTT计时服务器 → 客户端ChangeCipherSpec、Finished第二个RTT结束握手完成所以正确的描述是TLS 1.2握手需要2个完整的RTT。为什么会有四次握手的说法术语上的混淆来源消息流视角从消息序列看确实是4条主要消息流ClientHelloServerHello Certificate ServerHelloDoneClientKeyExchange ChangeCipherSpec FinishedChangeCipherSpec Finished协议层视角但物理传输上第2、3条消息通常在同一数据包中第4、5条也是历史原因早期文献和教学中常用四次握手来形象描述这4个关键步骤序列发起 HTTP 请求时需要经过 TCP 三次握手和 TLS 四次握手 (TLS 1.2)的过程因此共需要 3 个 RTT 的时延才能发出请求数据。什么是RTTRTTRound Trip Time往返时延数据包从客户端发送到服务器再返回客户端所需的时间。它是网络延迟的核心度量单位。一个RTT 客户端发出请求到收到响应的完整来回时间HTTPS连接建立的完整过程3个RTTRTT 1️⃣TCP三次握手1个RTT客户端 服务器 |----- SYN ------| |---- SYNACK ---| (此时完成1个RTT) |----- ACK ------|SYN客户端说“我想连接”SYNACK服务器说“好的可以连接”ACK客户端说“收到开始通信”到这一步TCP连接建立耗时1个RTT。RTT 2️⃣TLS握手前两轮1个RTT客户端 服务器 |--- ClientHello --| |-- ServerHello ---| |-- Certificate ---| |-- ServerKeyExchange-| |-- ServerHelloDone -| (此时完成第2个RTT) |--- 后续TLS消息 ---|ClientHello客户端支持的TLS版本、加密套件等ServerHello服务器选择加密套件、发送证书等从ClientHello到ServerHelloDone又耗时1个RTT。RTT 3️⃣TLS握手最后交换1个RTT客户端 服务器 |--- ClientKeyExchange-| |--- ChangeCipherSpec -| |--- Finished ---------| |-- ChangeCipherSpec --| |-- Finished ----------| (此时完成第3个RTT)客户端发送密钥交换信息双方确认切换到加密通信验证握手完整性最后这部分交换再耗时1个RTT。可视化时间线时间轴 0ms Client Server ├─SYN─────────────►│ │ │ │◄────SYNACK──────┤ │ │ RTT 1完成 (TCP握手) ├─ACK─────────────►│ │ │ ├─ClientHello─────►│ │ │ │◄─ServerHello等───┤ RTT 2完成 (TLS第1轮) │ │ ├─ClientKeyExchange►│ │ │ │◄─Finished───────┤ RTT 3完成 (TLS第2轮) │ │ ├─HTTP Request────►│ ★现在可以发送实际数据了 │ │ │◄─HTTP Response───┤关键点在TLS 1.2中必须完成全部3个RTT后才能发送第一个加密的HTTP请求。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询