对称加密
1.客户端与服务端协商加密算法及压缩方法以及ssl/tls最高协议版本号等信息发送给服务器
2.服务器选定加密方法,压缩方法
3.客户端把加密套件及生成随机clientrandom数发送给服务器
4.服务器选好加密套件及发送随机serverrandom数发送给客户端
5.浏览器确认
6.服务器确认
7.clientrandom+serverrandom 生成密钥加密数据发送给服务器
8.服务器用clientrandom +serverfandom 生成密钥解析数据
缺点:黑客拿到随机数可以解密
非对称加密
服务器保留私钥,把公钥及选好的加密套件发送给浏览器
浏览器用公钥加密数据
服务器用私钥解析加密数据
缺点:非对称加密效率低,服务器端用私钥加密传输数据,浏览器端用公钥解密时容易被获得公钥
非对称加密传输对称加密时的密钥,传输数据其实还是用的对称加密
1.客户端把加密套件及生成随机clientrandom数发送给服务器
2.服务器返回加密套件及生成serverrandom数公钥发送给浏览器
3.浏览器用生成新的随机数newclientrandom,公钥加密newclientrandom +浏览器确认 发送给服务器
4.服务器用私钥解密newclientrandom
5.服务器确认发送给浏览器
6.浏览器用serverrandom + clientrandom + newclientrandom 生成密钥传输数据
7.服务器用serverrandom + clientrandom + newclientrandom 生成密钥解密数据
缺点:DNS 劫持将 IP 地址替换成了黑客的 IP 地址,这样我访问的其实是黑客的服务器了,黑客就可以在自己的服务器上实现公钥和私钥
引入CA证书
引入CA证书之前有一套公钥和私钥
把公钥放在CA证书里面
1.当服务器端返回加密套件 + serverrandom + 数字签名证书
2.客户端拿到签名证书解析公钥
3.客户端生成newclientrandom 用共钥匙加密newclientrandom
4.服务端用私钥解密newclientrandom
相对上种方式只是引入CA证书,并将公钥放在CA证书里面,私钥用来解密加密后的newclientrandom
验证CA可靠性,浏览器内置顶级CA