一、序言
HTTPS大家并不陌生,但其背后真正的原理,能完整说明白的人少之又少。掌握HTTPS的原理,不仅可以提高自己的段位,而且其中的安全思想也可以应用到其他的安全架构设计上。
二、对称加密和非对称加密
HTTPS本质是为了解决安全传输的问题,对称加密和非对称加密在一定程度上都可以解决。我们展开讨论下:
1、对称加密
通信双方约定一个密钥,通过公开的算法进行加解密。
2、非对称加密
有公钥和私钥之分,算法和公钥是公开的,公钥加密的数据只能通过私钥解密,私钥加密的数据只能通过公钥解密。
对称加密,通信双方需要事先同步密钥,密钥如何安全的传递?非对称加密,相对于对称加密,虽然不需要传递密钥,但是性能太低。如果二者结合,用非对称加密传递密钥,然后用对称加密传递数据,既安全又高效。但是这样就真的做到了无懈可击吗?
三、HTTPS
那如何安全地分发公钥?这样又引入了大家经常听到的CA认证体系。
由CA认证中心生成数字证书,客户端首次请求服务端,会拿到数字证书,并进行相应的校验(浏览器内置了CA本身的证书,用于校验CA生成的数字证书)。整体流程如下:
四、总结
加密层位于http层和tcp层之间,https不是对http报文进行加密, 而是对传输数据进行加密。到达http层的数据,和最终还原的http原始报文都是明文。
给大家留一个思考问题:既然https这么安全,用户名&密码登录还需要自定义加密吗?
五、引用文献
[1] https://blog.csdn.net/u014756827/article/details/102836569
[2] http://blog.zhiyu1995.xyz/2017/07/20/%E4%B8%80%E4%B8%AA%E6%95%85%E4%BA%8B%E8%AE%B2%E5%AE%8Chttps/
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。