前言
HTTPS其实不是什么新鲜协议,很早之前google等大公司已经陆续开始使用了。那既然巨头们早已开始使用HTTPS了,想必一定有过人之处,接下来看看HTTPS是如何保证我们的数据安全的。
先来看看与https有啥区别
如上图所示 HTTPS 相比 HTTP 多了一层 SSL/TLS,正式这层保证了我们数据通信安全
由于http没有进行身份验证所以容易被黑客劫持,伪造http请求下发给客户端
由于http没有对身份进行验证也没有任何加密措施所以极度容易被劫持数据,所以https引入了加密和证书机制来保证数据安全和验证服务器身份
如上所示,在进行第 2 步时服务器发送了一个SSL证书给客户端,SSL 证书中包含的具体内容有:
1.证书的发布机构CA
2.证书的有效期时间
3.服务器的公钥
4.证书所有者
5.hash签名
当客户端在接受到服务端发来的SSL证书时,会对证书的真伪进行校验,以浏览器作为例子:
1.首先浏览器读取证书中的证书所有者、有效期等信息进行一一校验
2.浏览器开始查找操作系统中已内置的受信任的证书发布机构CA,与服务器发来的证书中的颁发者CA比对,用于校验证书是否为合法机构颁发
3.如果找不到,浏览器就会报错,说明服务器发来的证书是不可信任的。
4.如果找到,那么浏览器就会从操作系统中取出 颁发者CA 的公钥,然后对服务器发来的证书里面的签名进行解密
5.浏览器使用相同的hash算法计算出服务器发来的证书的hash值,将这个计算的hash值与证书中签名做对比
6.对比结果一致,则证明服务器发来的证书合法,没有被冒充
7.此时浏览器就可以读取证书中的公钥,用于后续加密了
所以通过发送SSL证书的形式,既解决了公钥获取问题,又解决了服务器身份验证的问题,HTTPS加密过程也就此形成。
所以相比HTTP,HTTPS 传输更加安全
(1) 所有信息都是加密传播,黑客无法窃听。
(2) 具有校验机制,一旦被篡改,通信双方会立刻发现。
(3) 配备身份证书,防止身份被冒充。