目前大部分网站都已经由http切换到https,那么https相比http有何优点,又是如何实现的呢?
https简单的说就是http+ssl/tsl,他使用安全的加密网络传输,可以有效的防止数据被篡改挟持等问题,那https是如何工作的呢?在此之前,先简单介绍下对称加密和非对称加密。对称加密就是端和服务器使用同一个密钥,其特点是加密效率高,但是存在安全问题;非对称加密是指端和服务器使用不同的密钥,一般情况下端使用的是公钥,服务器存放的是私钥,使用公钥加密的数据只有使用私钥才可以解密,使用私钥加密的数据只有使用公钥才可以解密。
首先使用http的时候,由于传输的信息都是明文因此会受到攻击,发生数据被劫持和篡改等问题.因此想到给数据加密,首先考虑的是用对称加密,使用对称加密可以不怕被攻击和篡改,因为别人根本不知道你的密钥,但是存在问题,浏览器和网站如何同步密钥?在双方不知道密钥的情况下,第一次肯定是明文,就不可避免的会被攻击,然后拿到密钥,就会发生和http相同的问题。因此需要引入非对称密钥,
非对称密钥是如何解决这个问题的呢?首先浏览器这边随机生成一个密钥,然后使用网站提供的公钥来进行加密,因为私钥是存在网站的,也只有私钥可以解密,因此可以认为是安全的。
但上述还存在一个问题,即浏览器如何拿到网站的公钥?因为公钥是公开的,完全存在被别人篡改的可能性,如果使用假的公钥发送数据,就还是会存在数据泄露的风险,解决此问题的是CA证书
网站管理员需要向CA机构申请证书,ca会根据网站提供的公钥和其他信息,生成CA证书,ca会使用自己的私钥对证书进行加密,网站管理员将该加密信息配置到服务器上即可,每次浏览器请求的时候,网站会先将该信息返回浏览器,浏览器会根据ca公钥解密,验证网站的可靠性。如果验证成功就继续,如果不成功则会弹出不安全的提示。
所以https是使用何种加密方式工作的?非对称加密+对称加密,非对称用在生成密钥,生成密钥后双方就会使用该密钥进行对称加密。