要了解HTTPS的加密原理,就需要先知道对称加密和非对称加密。
1. 对称加密
所谓对称加密,对称二字含义就是相同,也就是客户端和服务器双方共同使用一个密钥,无论解密或者解密,都可以通过这个密钥来完成。
问题
这样虽然保证了双方传输的效率,但是由于存储在浏览器的密钥很容易被窃取,一旦数据在传输过程中被拦截到,就很容易将加密数据包破解。
2. 非对称加密
非对称加密用到了两种密钥,公钥和私钥。公钥存放在客户端,私钥存放在服务器。使用公钥加密的数据只有私钥能够解密,使用私钥加密的数据只有公钥可以解密。、
问题
虽然使用非对称加密安全性更高,但是每次对于公钥和私钥的加密解密会降低部分效率。
3. HTTPS的加密解密原理
首先浏览器通过使用网站提供的公钥来对数据进行加密,网站受到消息之后,只需要使用私钥就可以进行解密。
并且只有在第一次设定密钥的时候用到非对称加密,当网站受到浏览器随机生成的密钥之后,双方就可以通过对称加密的方式来进行通信,提高传输效率。
问题
公钥篡改问题,在网站提供公钥时,有可能会被恶意拦截篡改公钥,这样浏览器再向网站发送数据时,就很容易被拦截解密,泄露数据。
解决方法
CA机构给网站签发数字证书,保证浏览器能够安全的获取到网站的公钥。
- 网站向CA机构申请,将自己的公钥交给CA机构,CA机构会追加部分信息(域名,有效时长等)来制作证书。
- 制作完成以后,CA机构会使用自己的密钥进行加密,将加密后的数据返回给网站,网站此时就只需要将加密数据配置到服务器即可。
- 浏览器请求时,网站会先将加密数据返回给浏览器,浏览器再根据CA机构的公钥来进行解密,解密成功之后就可以获取到证书以及访问网站的公钥了。