目录
开篇
工作中HTTP与HTTPS是我们接触最多的协议,作为四层模型中,最上层模型,无论是我们自己开发网站,还是面向百度编程时,都需要使用到HTTP与HTTPS。大家都知道HTTP不安全,明文传输,HTTPS采用非对称加密与对称加密相结合的方式,保障传输数据的安全性。但是对于HTTPS的工作原理还是有些模糊,因为这个过程本身就是比较绕的。所以这里呢,我们不会去讨论具体的底层实现细节,我们只梳理整个流程,为大家理清HTTPS能够安全传输的原因,作为以后深入学习的一个指引。
对称加密
对称加密特点是,秘钥相对较短,需要双方持有相同加密秘钥,算法公开,效率高,但是一旦有一方泄露了秘钥就会不安全,而且每次传输的时候,都需要生成秘钥,会造成秘钥泛滥。
非对称加密
非对称加密特点是,是由公钥和私钥共同组成的秘钥,公钥是所有人都持有的,私钥只有服务端持有,私钥加密只能通过公钥解密,公钥加密只能通过私钥解密,所以安全性高,但是加密效率相对较低。
HTTPS加密方式
HTTPS同时采用了对称加密与非对称加密,利用非对称加密,加密对称加密的秘钥,保障安全性的同时又提高了性能。
流程
第一步
1、网站公司首先向权威机构申请数字证书,证书包含网站信息,域名,公司信息,以及公司公钥,数字证书包含具体公司信息就是为了防止证书被拦截和篡改;
2、然后证书机构使用自己的私钥对证书进行加密,专业的证书机构一共就几家,是我们必须信赖的。
3、公司获取到证书后,将证书和秘钥部署到服务器上,配置到nginx中。
第二步
1、浏览器第一次访问网站时,网站将数字证书返回给浏览器。
2、浏览器使用机构公钥进行解密,获取网站信息及公钥。
第三步
1、浏览器生成随机秘钥A,用A加密传输数据。
2、在使用网站公钥B,加密A和A加密后的传输数据。
3、传输至网站后,网站使用私钥进行解密,获取秘钥A,然后使用A再次解密数据,获取传输数据。
4、使用随机秘钥A加密返回数据,此后采用对称加密进行传输。
(注意:此步骤中第一次传送随机秘钥是否和数据一起并未做明确验证,因此仅是一种流程的简易说明,暂且算作一次传输,想要细致研究的朋友可以深入探索。)
总结
以上就是HTTPS的工作流程梳理,内容虽然不涉及具体的秘钥算法,协议等内容,但是基本流程说明已经具备,希望可以抛砖引玉,为大家学习此部分内容有一个好的指引。