HTTPS的原理
之所以会去查找这些的资料,是因为之前我们的域名没有加证书,被部分浏览器拦截了,访问不了,后面才加了证书,这个证书到底有什么用呢?想必大多数人都会说安全啊,那具体是怎么做到更安全的呢?
HTTP
不安全的原因是:通过明文传输
出现的问题:可能在传输的过程中,会被监听、篡改或者冒充。
为了解决这个问题,我们就需要对传输的内容进行加密(即使监听到了数据,也看不懂),校验内容(防止被恶意篡改),验证身份(防止被冒充)。
提出方案:SSL/TLS (这是https的核心技术)
HTTPS
SSL/TLS:
核心: RSA非对称加密
通过我们对RSA工作原理的了解,会发现有两个问题:(1)服务器需要向客户端发送公钥,这个过程不安全 (2)RSA计算量大,会影响到性能
解决问题一:
服务器对 发送给客户端的公钥 使用 CA私钥(这里就涉及到我们申请的证书,全称应该叫数字证书,它可以获取到CA 的 私钥。而且只有CA才有私钥,保证安全) 进行加密
浏览器用 CA公钥(这是浏览器内置的,也很安全) 进行解密获得公钥
解决问题二:
更换成 对称加密 。其中密钥由双方协商生成。
几个重要的流程:(1)数字证书获取公钥 (2)协商生成对话密钥(详细过程:四次握手) (3)使用对话密钥进行加密
四次握手:(1)ClientHello : 传送随机数n1 、 能支持的协议版本和加密方法
(2)ServerHello: 传送随机数n2 、 数字证书,确定使用的协议版本和加密方法
(3)客户端回应: 传送 经过公钥加密的随机数n3
(4)服务器最后回应: 解密得到n3
注: n1、n2 、n3 通过相同的算法,生成对话密钥
补充概念
这里需要补充两个概念,RSA和与RSA相对应的对称加密
成员:会生成一把公钥和一把私钥;
工作原理:公钥加密,私钥解密;私钥加密,公钥解密(二者的关系是双向)
优点:安全
缺点:计算量大,负担重
成员:会生成一把公钥和一把私钥;
工作原理:使用同一把密钥进行加解密。
优点:快
缺点:需要传输密钥,不安全