1.什么是Https协议和Http协议
Https全称就是Hyper Text Transfer Protocol over SecureSocket Layer
Http是一种在因特网上传输数据的协议,当我们在上网时,大多数都是使用Http协议,但这个协议它是不安全的。而 Https协议是安全的。
2.Http不安全的原因
1.使用明文进传输,没有加密功能
2.不会验证通信双方的身份信息。任何客户端都可以去访问服务器(不知道你是哪里来的)
3.无法证明报文的完整性,可能存在被篡改的危险。(使用数字签名算法解决这个问题,如果说这中间数据出现了问题,那么数字签名会发生变化)
现在一些流行的抓包工具(wireshark)可以获取Http请求和响应的内容。
所以说我们思考问题的出发点在于 不是让别人看不到,而是要让别人看不懂。
但是http协议本身不具备加密功能。所以我们需要借助外部力量。
我们可以使用一些安全传输协议,例如我们的SSL TLS(传输层安全协议)
Http+SSL = Https = Http+加密+认证+保护内容完整性
3.为什么Http不安全还要去使用它
在使用Https的时候,涉及到加解密,所以会导致处理速度比较慢,一般在一些敏感的请求中,我们才会使用Https,对于其他普通请求,我们使用Http请求即可。
4.SSL
传输层的安全协议,它可以解决上面三个棘手几问题。
对称加密和非对称加密
对称加密:
- 就是要通信双方要约定一个相同的密钥,客户端把密钥和数据存放在传输的内容里面。服务端拿到密钥进行解密,就可以拿到数据。但是这样存在一个问题,在传输的过程中,密钥很有可能被监听。从而让别人获取到我们的数据。
非对称加密:
- 非对称加密涉及到2把密钥。一把称之为公钥 用于加密,另一把称之为私钥
用来解密,它是只有服务器才知道的。公钥进行加密,私钥进行解密。这个时候我们使用了公钥对数据进行加密,那即是黑客拿到了数据,他也解密不了,因为它没有那个私钥。服务器有私钥,那么他就可以获取到里面的数据。
客户端如何拿到这个公钥:
- 数字认证机构,他是介于我们的服务器和客户端之间一个可信赖的机构。例如
versign。首先服务器向这个数字认证机构提出一个公开密钥的申请。这个时候,数字认证机构会去核实服务器的身份,会将你申请的一个公钥进行一个数字签名。然后把你的数字签名和这个公钥一起放到一个证书里面去。 - 服务器向客户端发送一个数字证书,客户端这个时候时候无法明确服务器的身份(还有可能是伪造的服务器),他要到数字认证机构进行一个认证。核实一下这个数字签名是否一致,如果是真的,就能表明服务器的是真的。从这个证书中取出公钥进行一个数据的加密传输。 服务器在收到数据的时候,会对数据进行一个校验,查看数字签名的值是否发生变化,如果发生变化,则说明数据被篡改过了。
如果错误,欢迎及时纠正。