基本思路是使用公钥加密法:
1.客户端先向服务端索要公钥
2.然后利用公钥加密信息
3.服务端利用自己的私钥进行解密
因为公钥的加密计算量太大,所以产生了对话密钥
SSL协议在握手阶段是非对称加密【也就是两个密钥,公钥与私钥】
传输阶段是对称加密【一个密钥,两边都使用这一个密钥】(对话密钥)
SSL/TLS过程是:
1、客户端向服务端所有公钥
2、双方协商生成对话密钥
3、利用对话密钥进行通信
1、2步骤为握手阶段
TLS有两种握手方式。一种基于RSA,一种基于Diffie—Hellman 主要区别在于主密钥交换和认证上的
下文所描述为RSA:
第一步:
由客户端像服务端发送hello,发送信息红字 随机数名字为client random(是一个32B系列,每次连接时都会动态生成,每次得值都不一样 4B时间戳+28B随机数)
这里需要注意一下 发送信息不包括服务器域名 服务器只能包含一个网站 否则会分不清向客户端提供哪一个网站的数字证书
这也就是为什么一台服务器只能一张数字证书的原因<