让我们先来看看HTTPS,什么是HTTPS?
学大佬们先来一段纯英文滴!!!
WIKI百科定义:
Hypertext Transfer Protocol Secure (HTTPS) is an extension of the Hypertext Transfer Protocol (HTTP). It is used for secure communication over a computer network, and is widely used on the Internet. In HTTPS, the communication protocol is encrypted using Transport Layer Security (TLS) or, formerly, its predecessor, Secure Sockets Layer (SSL). The protocol is therefore also often referred to as HTTP over TLS, or HTTP over SSL.
HTTPS (Hypertext Transfer Protocol Secure) 是基于 HTTP 的扩展,用于计算机网络的安全通信,已经在互联网得到广泛应用。在 HTTPS 中,原有的 HTTP 协议会得到 TLS (安全传输层协议) 或其前辈 SSL (安全套接层) 的加密。因此 HTTPS 也常指 HTTP over TLS 或 HTTP over SSL。
我们可以这样看,HTTPS是对HTTP的拓展,可以理解为:HTTPS=HTTP+SSL/TLS(so,HTTPS并不是一个单独的协议)
前置:HTTPS请求的基本流程:
对比HTTP和HTTPS
HTTPS的优势:相对于HTTP来说,HTTPS的数据进行了加密传输,具有一定的安全性
HTTPS的劣势:1、HTTP建立连接简单,一般响应速度更加迅速 2、申请CA证书有时需要一定的费用 3、在相同网络环境中,HTTPS耗费的资源和耗电量都有所上升
SSL/TLS
SSL :Secure Sockets Layer 安全套接层
TLS:Transport Layer Security 安全传输层协议
SSL/TLS其实已经在上图崭露了头角,他们就是为HTTP提供安全服务的角色,虽然SSL出现的更早,但现在来看TLS已经逐步替代了SSL,我们在接下来讨论TLS。
我康了康这张图大佬就画的很详细,转载自华南理工大佬@HYN96145 掘金社区(大佬也有讲HTTPS和TLS的文,推荐读一读~~~~~~)
图中内容详见:HTTPS详解二:SSL / TLS 工作原理和详细握手过程 - 掘金 (juejin.cn)
从上图我们看到,TLS为HTTP提供的安全层实际上是通过了非对称加密的方式,从我们熟悉的科克霍夫原则来讲,对于安全的保障来说,密钥的安全性比加密算法的安全性要高得多,只要私钥不泄露,就算加密算法被研究的透透的,我们的数据安全也仍有保证。
那么TLS握手发挥了怎样的作用呢?
商定双方通信所使用的的 TLS 版本 (例如 TLS1.0, 1.2, 1.3等等);
确定双方所要使用的密码组合;
客户端通过服务器的公钥和数字证书 (上篇文章已有介绍)上的数字签名验证服务端的身份;
生成会话密钥,该密钥将用于握手结束后的对称加密。
在HTTP中,数据包被攻击者截获后很容易就能进行修改,导致我们传输的目的被破坏,通过使用TLS技术,我们发现,因为数据包经过加密,即使被黑客截获,由于黑客不知道密钥,也无法获取数据包中的信息。
我们发现,TLS实际上实现了三个目的,首先是数据加密,上图已经十分明显了,二是身份验证,TLS确保了数据传输双方的身份,同时还进行了完整性的检验,确保了数据包内容不被篡改或者伪造。
ps:现在我们所说的SSL证书实际上大都是SSL/TLS证书。
以上是小白的TLS学习笔记~~~~欢迎大佬们批评指正