大多使用HTTPS协议的原因是因为HTTP在使用上是不如HTTPS安全的。比如当我们在往服务器发送比较隐私的数据时,如果使用HTTP进行通信,安全性没办法得到保障。数据在传输的过程中,是比较容易被中间人抓包窃取的。其次如果在不安全的环境下发送数据,数据也有可能在传输过程被篡改,当接收数据的服务器收取数据时,也没办法确定数据是否有被修改和替换过。当然服务器也没办法判断数据就是真的来源于客户端。
目前HTTP是存在一些弊端的,例如无法保证保密性,没法保证消息的完整、准确性,没法保证消息的可靠性。对比于这些问题,HTTPS是可以解决掉的。可以间接的把HTTPS理解为HTTP的升级版,包容了HTTP的功能,并逐步在HTTP的基础上增加了安全性能。
为了保证消息的保密性,就会涉及到加密和解密的问题。目前主流的分为对称加密和非对称加密两种。
对称加密就相当于是客户端和服务器共用了一个密钥来对消息进行加密。这种加密方式解决了HTTP中消息保密性的问题。但也存在缺点,因为是属于共用的密钥,所以密钥会比较容易泄露。
非对称密钥相当于客户端和服务端均拥有一个公有密钥和私有密钥。公有密钥可以对外暴露,而私有密钥只对自己可见的。使用公有密钥加密的消息只有对应的私有密钥才能解开。这种方式在解决了对称密钥里会面对的密钥泄露的问题。这种方式下的缺点也是有的,会存在公钥被中间人获取后篡改数据的问题,并且非对称加密相对于对称加密,是非常消耗系统资源的。
其实HTTPS的加密原理,主要在于充分利用了对称加密和非对称加密的优点,以及数字证书的作用。根据加密的特点,将HTTP进行了一次升级,升级到HTTPS的形态,就具备了一层加密的外壳了。