TLS 1.2握手过程解析

TLS的子协议

RecordProtocol(记录协议)
AlertProtocol(警报协议)
HandshakeProtocol(握手协议)

HandshakeProtocol

  • Client Hello
  • Server Hello
  • Certificate
  • Server Key Exchange
  • Certificate Request
  • Server Hello Done
  • Certificate Verify
  • Client Key Exchange
  • Encrypted Handshake Message(Client)
  • Encrypted Handshake Message(Server)

RecordProtocol

  • Change Cipher Spec(Client)
  • Change Cipher Spec(Server)

交换随机数

  • Client向Server发送Client Hello,内容主要包含,加密套件、随机数 random1
  • Server收到报文后从加密套件中选择一个合适的,连同随机数random2,一并发送给Client

这时两端都拥有了random1 和 random2

生成materkey

  • Server将数字证书发送给Client
  • Client收到报文后,通过本地的证书链验证合法性,解析出Server的公钥。
  • Client生成Random3,并使用公钥对Random3进行加密(这个加密串成为PreMasterKey),发送给Server。
  • Server对Random3的加密串通过自己的私钥进行解密。
    这时两边都同时拥有了random1 random2 random3
  • 两边用1和2步骤协商的加密算法,对random1+random2+random3进行加密,生成对称密钥串(MaterKey)

验证合法性

  • Client通知Server后续的报文都通过密文传输
  • Client通过前面的握手消息生成摘要发送给Server
  • Server使用密钥解密,能解密说明密钥可用
  • Server通知Client后续的报文都是通过密文传输
  • Server通过前面的握手消息生成摘要发送给Client
  • Client使用密钥解密,能解密说明密钥可用

合法性验证结束

You Might Also Like
发表评论