TLS通讯过程

95 阅读2分钟

一、TLS要做的事情

TLS在通讯过程中要做的事情时以下几点:

  • 验证身份

  • 达成安全套件共识

  • 传递密钥

  • 加密通讯

二、具体的加密过程

加密过程:

  • 第一步(Client Hello):客户端告诉服务器,它所支持的加密算法,因为不同的浏览器所支持的安全套件和加密算法是不同的,所以这里需要浏览器告诉服务器自己支持的加密算法。
  • 第二步(Server Hello):nginx有一个套自己的加密算法的列表,以及最想使用的一个加密算法套件。nginx选择一个加密算法套件发送给客户端。如果我们想一天内断开链接的客户端,再次链接能复用之前的加密算法套件,不再协商密钥,可以将ssl_session_cache属性打开。
  • 第三步(Server Certificates):nginx将自己的公钥证书发送给客户端,这个公钥证书中包含公钥证书链,即主证书+二级证书。客户端接收到之后,向自己操作系统中根证书库进行验证。并且第三步和第四步之前,nginx还会将自己选择的算法的参数发送给客户端。公钥证书中包含公钥(public key2),申请证书时会有私钥(private key2)。
  • 第四步(Server  Hello Done):达成安全套件共识。
  • 第五步(ClientKey Exchange Message):客户端根据加密算法的参数生成公钥(public key1)和私钥(private key1),并将公钥public key1发送给nginx。
  • 第六步(Key generation):nginx根据(public key1)+(private key2)生成自己的密钥。客户端根据(public key2)+(private key1)生成自己的密钥。
  • 第七步(finished):传递密钥结束,开始可以使用密钥加密数据,传递数据。

上面前六步为非对称加密过程,后面第七步之后为对称加密过程。