发送的数据都是明文的,没有经过加密的。
中间可能有第三者窃听,截取数据包,自己进行伪装。
伪装成客户端跟服务器进行交互。服务器没有机制来认证客户端的身份。
客户端也没有任何机制确定服务器的身份。没有办法确认双方的身份。
第三者截取了数据包,对数据包进行了篡改。 服务器也不会知道。
以上是HTTP协议的缺点,存在安全隐患的。
因为这些隐私信息(例如:身份证信息)都在网上进行传输,所以对这个安全隐患越来越重视,就诞生了HTTPS协议。
HTTPS超文本传输安全协议。是以安全为目标的HTTP通道。简单讲是HTTP的安全版。
1)它加密数据并确保其机密性(加密,数据密文)。
2)可保护用户在与网站交互时免于窃取个人信息和计费数据。(因为加过密的数据,窃取了也没用。对服务器和客户端进行一个身份认证。)
3)防止信息被篡改。可以保证信息的完整性。
HTTP协议与HTTPS协议的报文结构的对比
报文结构:HTTPS多个一个SSL层。SSL层之上才是HTTP。
HTTPS是披着SSL外壳的HTTP协议。SSL协议提供安全保障的。
HTTP+加密+身份认证+信息的完整性保护=HTTPS
图片来自网络:通俗版模拟HTTPS协议的客户端和服务器端的交互过程
女生(客户端):
1.说:“你好,我想和你建立HTTPS的连接”。
3.因为安全通道需要加密,我告诉你我所有支持的加密方式。
6.客户端在本地生成了一个密钥(这个密钥是用来加密后面的数据的),把这个密钥发送给了服务器。以后发消息都要用这个密钥进行加密。
并把密码发送给了服务器。客户端和服务端需要用同一个密码,才能看到消息内容。
男生(服务器):
2.好呀,但是我们要先建立一个安全通道,防止被窃听。--SSL握手开始。
4.从客户端告诉的加密方式里选了一个服务器本身也有的相同的加密方式(我这里也有一个和你用的一样的加密方式。我们只有用一样的加密方式才能进行正常通信)。并把加密方式告诉了客户端。
5.把身份证也告诉了客户端。(对服务器端来说,身份证就是一张证书。这个身份证由一个权威机构颁发的)。
7.服务器保存了这个密钥。给客户端回复:“我已经记下来了,以后可以安全的聊天啦。”--握手结束。
后面就发送HTTP消息了。HTTP的请求和响应都是在SSL协议建立好的这个安全通道里面进行发送的。
图片来自网络:专业版的HTTPS协议的客户端和服务器的交互过程
1.客户端请求建立SSL连接,并将自己支持的一套加密规则发送给服务器。
2.服务器从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给客户端。
证书里面包含了网站地址,加密公钥,以及证书的颁发机构等。
一对钥匙:公钥(公布出去的)--加密。私钥(私有)--解密。
3.获得服务器的证书之后,客户端要做以下工作:
4.服务器接收客户端发来的数据之后要做以下的操作:
SSL握手完成了。HTTP的请求和响应都是在SSL协议建立好的这个安全通道里面进行发送的。