一、HTTPS是什么
HTTPS也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层。
由于HTTP协议内容一般都是本文方式明文传输的,这就导致它在传输过程中会出现被篡改的情况。
经典案例就是万恶的“运营商劫持”!
除了运营商可以劫持,一些黑客也可以通过类似的手段进行劫持,从而窃取用户隐私信息,或者篡改内容,为了解决这些问题,于是就引入了HTTPS协议。
HTTPS就是在HTTP的基础上进行加密来保证用户的信息安全。
加密的相关概念
明文:要传输的信息。
密文:对明文进行某些加密算法后产生的文字。
加密:就是把明文通过一系列变换后生成密文。
解密:把密文还原为明文
密钥:在加密或者解密的过程中,往往需要一个或多个中间的数据来辅助进行这个过程,这样的数据被称为密钥。
加密的方式有很多,整体可以分为对称加密和非对称加密。
对称加密:通过一个密钥进行加密和解密,最简单的对称加密方式就是进行异或操作。
非对称加密:通过一个“公钥”和一个“私钥”进行加密和解密。非对称加密虽然更安全,但它最大的缺点是运算速度比较慢。
二、HTTPS的工作过程
1、引入对称加密
引入对称加密后,即使请求被黑客截获,黑客没有密钥,也无法知道请求的真实内容。
但一个服务器要服务很多个客户端,每个客户端的密钥都必须是不同的(如果每个客户端的密钥都一样,那么黑客也就能拿到密钥了) ,这样一来,服务器就需要维护每个客户端和其对应密钥的关联关系,这样做会比较麻烦。
更好的做法是,在客户端和服务器建立连接的时候,双方约定好这次的密钥是什么。
但如果直接明文传输密钥,那么黑客也能拿到密钥,后续的操作也就没有意义了。
因此密钥的传输也需要进行加密,如果一直这样加密下去的话就变成了“先有鸡还是先有蛋”的问题了。
因此就需要引入非对称加密。
2、引入非对称加密
非对称加密的公钥是所有人都能拿到的,但是私钥只是服务器才持有的。
通过公钥对明文进行加密得到密文,而只有通过私钥对密文进行解密才能得到明文。
但是道高一尺,魔高一丈,黑客又想出了“中间人攻击”的方式:
黑客相对应客户端来说,把自己伪装成服务器;相对于服务器来说,把自己伪装成客户端,从而获取到每次请求和响应的真实内容并进行篡改。
3、引入证书
破解“中间人攻击”的方式就是识别出服务器返回的公钥是否是被黑客伪造的公钥,于是就有了“证书”。
在客户端和服务器刚建立连接的时候,服务器返回给客户端一个证书,证书中包含了公钥和网站的身份信息,当客户端获取到证书后,就会对证书进行校验,防止证书是黑客伪造的。
(证书自身有一些校验机制,黑客想要篡改证书,很容易被浏览器识别出来)
浏览器如果发现证书有问题,就会弹窗提示该网站证书不完全,阻止用户继续访问。