HTTS

224 阅读2分钟

1. 握手过程

  1. 客户端向服务器发起请求, 把客户端支持的TLS版本,支持的加密算法列表, 随机数种子C发送给服务端
  2. 服务端返回客户端一个握手报文消息, 版本消息包括三个方面内容,最终决定的加密算法, server端的证书(CA机构用自己的私钥,对服务器的公钥+其他信息加密生成数字签名), 随机数S
  3. 客户端收到响应报文后, 首先验证证书(拿到CA机构的公钥(都会内嵌在浏览器中)对证书进行解密拿到服 务端的公钥),然后利用加密算法,通过随机数C+随机数S+客户端生成的预主密钥,进行会话密钥的组装
  4. 客户端通过解密证书,拿到服务端的公钥对预主密钥加密发送给服务端, 服务端利用自己的私钥解密得到客 户端的预主密钥, 然后利用同样的加密算法,通过随机数C+随机数S+客户端的预主密钥,进行会话密钥的组装
  5. 客户端和服务端发送消息,就用这个会话密钥进行对称加密传输(加密和解密都用这个会话密钥)
  6. 客户端发送一个加密握手消息,来验证安全通道是否已经建立完成

2. 证书

  1. 证书就是CA机构利用自己的私钥对服务端的公钥和其他信息进行加密签名生成数字签名,
  2. 客户端拿到证书后, 利用CA的公钥进行解密,拿到服务端的公钥(客户端利用服务端的公钥对预主密钥进行加密传给服务端)和其他信息,进行对比是否一样来验证证书的合法性
  3. 签名证书的主要目的是判断服务端的公钥是否被修改过

3. 会话密钥

  1. 会话密钥里面包含两个密钥:服务端消息密钥+客户端消息密钥
  2. 服务端发送消息:用服务端消息密钥加密 -> 客户端收到消息后,用服务端消息密钥解密(对称加密, 用哪个加密就用哪个解密)
  3. 客户端发送消息:用客户端消息密钥进行加密 -> 服务端收到消息, 用客户端消息密钥进行解密

4. 主要解决的问题

  1. 对称密钥被劫持的情况(利用非对称加密进行握手,生成会话密钥)
  2. 非对称加密,公钥在传递过程中可能被劫持的情况,通过CA机构对服务端公钥进行数字签名

5. 传输过程

  1. 握手过程是非对称加密,消息发送是对称加密