https中的TLS协议

TLS简介

TLS是一种安全协议,用于在两个通信应用程序之间提供保密性和数据完整性。

它是SSL协议的继任者,由IETF(互联网工程任务组)在RFC 5246中标准化。

TLS协议位于TCP/IP协议栈的传输层之上,它使用加密技术来确保数据的机密性(只有预期的接收者可以读取数据)和完整性(数据在传输过程中不会被篡改)。

TLS工作流程:

1. 握手开始(ClientHello)

  • 客户端发起请求:客户端首先向服务器发送一个“ClientHello”消息,该消息包含客户端支持的TLS版本、加密套件列表(加密算法和密钥交换方法的组合)、压缩方法列表以及一个由客户端生成的随机数(Client Random)。这个随机数用于后续的密钥生成。

2. 服务器响应(ServerHello + ServerCertificate等)

  • 服务器选择参数:服务器收到ClientHello消息后,会从中选择一个双方都支持的TLS版本、加密套件,并生成一个自己的随机数(Server Random)。
  • 发送ServerHello:服务器向客户端发送“ServerHello”消息,包含选定的TLS版本、加密套件、服务器随机数等信息。
  • 发送证书:服务器还会发送自己的数字证书(ServerCertificate),该证书包含服务器的公钥和由证书颁发机构(CA)签发的签名,用于验证服务器的身份。
  • 其他可选消息:根据选定的密钥交换方法,服务器可能还会发送ServerKeyExchange消息(如果服务器证书中的公钥不足以进行密钥交换)和CertificateRequest消息(如果服务器要求客户端进行身份验证)。

3. 密钥交换和验证(ClientKeyExchange + CertificateVerify等)

  • 客户端生成预主密钥:客户端验证服务器证书无误后,生成一个预主密钥(Pre-Master Secret),并使用服务器证书中的公钥加密后发送给服务器。
  • 发送ClientKeyExchange:客户端发送“ClientKeyExchange”消息,包含加密后的预主密钥。
  • 证书验证(如果适用):如果服务器要求客户端证书,客户端会发送自己的证书(Certificate)和CertificateVerify消息,以证明它拥有与证书中公钥相对应的私钥。

4. 握手完成(ChangeCipherSpec + Finished)

  • 改变密码规范:客户端和服务器各自发送“ChangeCipherSpec”消息,表示接下来的通信将使用协商好的加密套件和密钥进行加密。
  • 发送Finished消息:双方各自计算并发送“Finished”消息,这是一个加密的消息,用于验证之前所有握手消息的正确性,从而确保双方都没有被中间人攻击。如果Finished消息验证成功,则握手过程完成。

5. 加密通信

  • 会话密钥生成:客户端和服务器使用预主密钥、客户端随机数和服务器随机数,通过一定的算法生成会话密钥(Session Key)。
  • 加密数据传输:握手完成后,客户端和服务器使用会话密钥对传输的数据进行加密和解密,确保通信的机密性和完整性。

6. 连接关闭

  • 当客户端和服务器完成通信后,需要终止连接。这通常涉及发送关闭通知(如CloseNotify消息),并等待对方确认关闭。如果一方没有收到关闭通知,可以通过超时机制来关闭连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值