TLS握手
HTTP 端口为80
HTTPS 端口为443
SSL是TLS的前身,现在大多浏览器都不支持SSL,而是支持TLS
TLS 1.2
先是TCP三次握手不变
客户端发送一个Client Hello给服务器,告诉服务器支持TLS 1.2和支持的加密套件,生成一个随机数发送出去
服务端发送Server Hello给客户端,确认支持的TLS版本以及选择的加密套件,并且生成一个随机数发送出去
服务器会再发送一个响应来出示服务器自己的证书,这样浏览器就可以根据自己证书信任列表来确认服务器是否可信
接下来服务器把公钥发送给客户端
最后服务端发送结束报文
客户端处理响应,生成第三个随机数,叫做预主密钥,它会被服务器端公钥加密,并且把解密后的值(Pubkey)发给服务器端,
这一步告诉服务器往后的数据就用商议好的算法和秘钥来加密
两边以Encrypted Handshake Message结束,开始对称加密,TSL握手成功
服务端接收到加密后的预主密钥,用自己的私钥解密,这时只有客户端和服务端知道预主密钥,最后两边用第一随机数、第二随机数、预主密钥计算出会话密钥
总结
非对称加密:消耗资源大