都知道https相对于http来说,更加安全。那么https是什么呢,又是产生的呢。这不得不说一下http的几个缺点
-
使用明文传输,可能会被窃取不安全
-
不会验证通信方的身份
-
无法验证报文的完整性,不能辨别报文是否被修改过
对内容进行加密
由于http是没有加密功能的,所以内容加密需要依赖第三方来实现。比如
-
SHA安全散列算法
-
MD5
-
Base64 等等。
对内容加密的不足之处
-
虽然对内容进行了加密,但是加密之后的数据包还是可以窃取的,并且无法保证加密内容不能被破解
-
还是没有解决通信方的身份验证问题,不能判断请求方是否为目标主机
-
加密之后的报文虽然安全性得到一定程度的提升,但是依然无法验证报文的完整性,也无法辨别报文是否被修改过。
综合以上原因,https应运而生
SSL/TSL、HTTPS
https就是http结合SSL/TSL来实现的。首先需要了解下SSL/TSL是什么
-
TSL:安全层传输协议,用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。
-
SSL:安全套接层,位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。
https协议并不是一个新的协议,是将http的协议通信接口部分用SSL/TSL代替。也就是说,从最初的http直接与TCP通信,变成了http先与SSL通信,再由SSL与TCP进行通信,可以理解为,http多加了一层SSL就变成了https
https是如何通信的
https通信过程结合了对称加密和非对称加密2种算法。https服务端在简历SSL通信时,会将自身的公钥发送给客户端。客户端拿到公钥之后通过非对称加密与服务端协商数据传输通道的对称加密密钥,协商出密钥之后,后续的数据通信就会一直使用基于该密钥的对称加密算法了。
具体流程如下
1.客户端发送请求开始SSL通信
2.服务端可以进行SSL连接时,就会发送应答报文给客户端
3.接下来服务端发送Certificate报文(包含公开密钥证书)给客户端。
4.最后服务端发送通知报文通知客户端。
5.客户端先生成Pre-master secret随机密码,并以包含Pre-master secret且使用公钥加密的报文响应服务端
6.客户端继续发送报文提示服务器说接下来的所有通信都采用Pre-master secret密钥加密
7.客户端发送Finsh报文(该报文包含连接至今所有的整体校验值)
8.服务器也重复6 7步骤发送同样的报文,当Finsh报文交换结束后SSL连接算是建立完成
9.接下来就是进行HTTP请求了,同时通信会受到SSL的保护
https的缺点
虽然https解决了http的安全问题,但是https本身也存在一些缺点。
-
因为
https比http多了一层SSL通信,所以通信速度比http慢 -
由于客户端和服务端要进行加密和解密处理,所以会导致客户端和服务端负载增强
-
https需要购买证书,增加额外的开销
https适用场景
https适用于多像交易支付等对安全性要求很高的服务进行加密通信,包括一些会包含个人敏感信息的服务等。如果非敏感信息等则使用http通信。