HTPP缺点:
- 明文通讯,容易被窃听
- 不验证通信方身份,中间通信的过程可以伪装
- 无法保证报文的完整性,中途可能发生篡改
HTTPS
超文本传输安全协议(个人理解),HTTPS=HTTP+SSL/TLS,TLS是SSL的升级版,HTTPS就是通过他们来保证传输的安全,那既然安全,是不是就是传输的信息不被拦截呢?不是,是在传输的时候经过加密算法加密,即使让你截获了,你也看不懂!!!
HTTP和HTTPS区别
- http开头—https开头
- 端口80—端口443
- 明文传输—加密传输
TLS处于TCP/IP模型的那一层呢?
TCP/IP模型分四层(盗图╮(╯▽╰)╭阮一峰大神的):
英文捉急,我来翻译一下,从上到下:应用层、传输层、网络层、网络接入层(字面翻译)
TLS处于应用层和传输层之间,看图:
握手过程
这里需要解释一波,因为每个人画的图都不太一样,所以这里我讲下我的理解,当然是在各位大神的基础上:(~2333
- 客户端这边发起请求,其中有协议版本(如:TLS.x)、生成一个随机数、支持的加密算法、压缩方法。
- 服务器,确认加密协议是否支持、生成随机数、确认加密方法(如:RAS)、RSA公钥放入CA证书,私钥自己保留
- 客户端校验证书,如果有问题,页面发出警告;若通过,生成随机数用公钥加密,这个随机数就是以后传输数据要用的加密秘钥,我们通过非对称加密公钥(如:RSA)进行加密,传给服务端
- 服务端,用自己保留的私钥,解密公钥加密过得随机数,解密后就是以后通讯用的对称加密密钥
客户端怎么校验证书的
纳尼!不知道什么是CA证书?你看下你网页左上角地址栏是不是有把锁,点开看下:
我说一个待会要用的:CA公钥,当然也有CA私钥,但不在客户端。校验证书其实就是校验数字签名的过程。
数字签名的过程:待签名内容->hash->数字摘要->CA私钥加密->数字签名
待签名内容:就是你看到的一部分证书信息。
校验:
1、数字签名->CA公钥解密->数字摘要A
2、待签名内容->hash->数字摘要B
3、对比A和B是否相等
你会发现其实步骤1就是数字签名的逆操作~(~手动滑稽
参考资料: