https,http和ssl的关系
https,http和ssl这三者是什么关系呢?
http是超文本传输协议,浏览器利用这一协议就可以访问各种网站了。
ssl指Secure Sockets Layer 安全套接层,是一种保证网络数据传输安全和完整的安全协议。
https是在http规则的基础上又加了一层加密协议的超文本传输协议,s 指代 Secure Socket Layer 安全套接字层,
http传数据大致是这样的: http协议封装好的数据包 -> tcp/ip -> 服务器 , 缺点:数据包中途可能被窃取或者被篡改
https大致流程是这样 : http协议封装好的数据包 + ssl加密 -> tcp/ip -> 服务器 缺点:虽然安全,但是开销变大了,传输速度也变慢了。
如果把http传输比喻成一个数据管道的话,ssl就是这个管道的特殊防护层,这个ssl不仅可以保护http传输,也可以用在其他数据加密传输.
https又是怎么保证数据的加密传输的呢?
首先再正式发送数据前,浏览器如果发现是https传输要进行必要的准备工作才开始发送,大致分为以下几步。
1, 浏览器把协议版本号,支持的加密算法 生成的随机数A发送给服务器。
2, 服务器接到客户端发送过来的加密算法后,查看自身支持的加密算法,确定双方后边使用哪种加密算法,然后把该算法和数字证书以及生成的随机数B发给客户端。
3, 客户端接到服务器发送过来的证数后,得到证书里的非对称加密的公钥D,然后又生成一个随机数C,把C和D加密后得到的一个字符串E发给服务器。
4, 服务器接到这个字符串E后,用自身的私钥解密得到C,这样服务器就集齐了 A,B,C,然后利用ABC生成对话加密密钥 , 因为客户端也得到了A,B,C 这样双方都能进行加密解密了,至于加密解密的算法就是前面双方交换加密方法表时约定的加密算法。
所以可以看出ABC中,只有C是极难被别人得到的,这样保证了安全性,同时这个过程前面用到了非对称加密,一旦加密密钥确定,后面其实用的都是对称加密了。