TLS是使用对称加密和非对称加密两种都有使用 TLS握手过程 客户端和服务器首先发送HELLO报文,包含TLS版本,加密套件,生成第一个随机数 服务端向客户端回复一个HELLO报文,包含TLS版本,加密套件,生成第二个随机数 接下来客户端会将证书和公钥发送给客户端 接下来客户端生成第三个随机数,称为预主密钥,这个预主密钥不会直接发送,而是会使用刚刚收到的公钥进行加密后在发送出去 TLS协商就没有问题了,加密开始 服务端收到加密后的预主密钥,会使用自己的私钥进行解密,服务端就获取到了预主密钥 这样就只有客户端和服务端知道预主密钥是什么,因为没有进行直接传输,最后客户端和服务端通过第一随机数、第二随机数和预主密钥计算出会话秘钥,各自得到的会话秘钥都是相同的,前面的步骤都是非对称加密,为了得到这个会话秘钥,后面的对话都是使用对称加密,都使用相同的秘钥,不使用非对称加密是因为比较耗费资源。如果与别的服务器沟通就是建立新的对话,会话秘钥也不相同,会话秘钥只应用于当前会话。 |