👉 这是一个或许对你有用的社群
🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:
《项目实战(视频)》:从书中学,往事中“练”
《互联网高频面试题》:面朝简历学习,春暖花开
《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题
《精进 Java 学习指南》:系统学习,互联网主流技术栈
《必读 Java 源码专栏》:知其然,知其所以然
👉这是一个或许对你有用的开源项目
国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。
功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号等等功能:
Boot 地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
Cloud 地址:https://gitee.com/zhijiantianya/yudao-cloud
视频教程:https://doc.iocoder.cn
来源:blog.csdn.net/qq_65228171
/article/details/130840752
既然要对HTTPS进行解读,我们首先了解,HTTPS是什么?
HTTPS就相当于HTTP+SSL/TLS这样的组合,HTTP(超文本传输协议),HTTP是tcp/ip组中的协议之一运用在应用层,也是互联网上应用最为广泛的协议之一,所有的WWW(万维网)文件都必须遵循这个标准。而设计HTTP协议的最终目的是用来在互联网上传输HTML文件,而SSL/TLS就是一种加密算法。
下面会对HTTPS加密的进化过程进行解析。
1 没有加密的时候
这个时候,客户端与服务器之间都已明文的方式传输,你只要在中间截取到数据,就可以看到客户端和服务器在干些什么。
![fd8e834bb9dc8f54fa7d159038e5b4b5.png](https://i-blog.csdnimg.cn/blog_migrate/44f87898f513209193f9405d504f236c.png)
这样做是比较方便、节约成本,但是我们在传输过程中全以明文方式传输,谁都可以看的见,谁都可以看的懂;如果我们这传输的是金钱交易,很容易就被黑客劫持,让黑客篡改了数据。故有了下面对称密钥加密的方式传输。
![49946fdd99d54556c0bb31ab935772a2.png](https://i-blog.csdnimg.cn/blog_migrate/57e55a4886fa4415aa2fd077a6affb41.png)
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/ruoyi-vue-pro
视频教程:https://doc.iocoder.cn/video/
2 对称密钥加密传输
对称密钥加密传输是客户端先生成一个密钥,客户端发送数据时,先使用密钥给明文加密,让他变成密文,在将密文和密钥传输给服务器,服务器再通过客户端发送的密钥进行解密得到明文。
![d0032e1d7c9f34cc7a7b92de75222ee0.png](https://i-blog.csdnimg.cn/blog_migrate/a852c067ca40e5487bf31b6719496a55.png)
对称密钥加密能解决传输中的安全问题吗?显然是不能的。在客户端生成密钥之后,我们是要将密钥发送给服务器的,这样服务器有了密钥才可以对客服端发送的密文解密,在这个过程中,密钥是经过传输才能到达服务器,如果在传输过程中被黑客劫持了,那么黑客也可以通过密钥将密文解密了。
既然对称加密无法破解,那就再引入一个新的加密方法:非对称加密。
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/yudao-cloud
视频教程:https://doc.iocoder.cn/video/
3 非对称加密
非对称加密是服务器生成两个密钥,我们称这两个密钥:一个公钥(pub)、一个私钥(pri);他两个是一对,用公钥加密的数据,必须用私钥才能解密;用私钥加密的数据,必须用公钥解密。
![a73715336ce4f1771394d8a87a2021ae.png](https://i-blog.csdnimg.cn/blog_migrate/3723952a010194f6a074592d80ccc8b6.png)
客户端在发送数据时,先给服务器大哥要公钥,客户端拿到公钥后,使用公钥加密完数据再发给服务器,服务器通过与公钥配对的私钥进行解密,这样就算在中间遇见了黑客截取数据,我们也不怕,因为黑客就算拿到了公钥和数据,黑客也无法使用公钥对数据解密。
非对称加密是否安全呢?这里的答案还是不安全;黑客这时使用“来骗来偷袭”的阴险招式来放到客户端这个老同志。
客户端在给服务器大哥要公钥,当服务器发来公钥时,黑客来了一个偷梁换柱、暗度陈仓将服务器的公钥A换成了公钥B,黑客将公钥B发送给了客户端,客户端就有公钥B进行加密数据,发送给服务器,黑客再次截取,通过私钥B将数据解密,之后再用公钥A加密发给服务器大哥,就这样黑客神不知鬼不觉就将数据拿到了手。在个期间,黑客手中有公钥A、公钥B和私钥B,公钥B和私钥B是黑客自己生成的,公钥A是黑客截取服务器的。
![fe525a040e509d964a2513405ead3d89.png](https://i-blog.csdnimg.cn/blog_migrate/4533136fa24dffdc10a3e60ab45e7877.png)
4 引入数字证书(对称加密+非对称加密)
既然上方的方法都不安全,只能再修改了,引入数字证书,数字证书由可信任的第三方权威机构颁发,相当于一个身份证,可以验证服务器的身份。数字证书包含了证书持有者的信息和公钥信息等。
这个过程中一共有五把密钥,一把是客户端生成的对称密钥,用来加密业务数据;服务器生成的非对称密钥公钥A和私钥A用于加密对称密钥;颁布证书机构的非对称密公钥B和私钥B(私钥机构自己持有,公钥客户端电脑系统内置),用来加密证书的签名。
![63669b5a5a1c7f0487142e1084e434f6.png](https://i-blog.csdnimg.cn/blog_migrate/fd36bb139d6acd3faab366be7816ea80.png)
客户端拿到证书之后,首先针对证书进行校验:
得到初始的签名: 客户端使用系统中内置的权威机构的公钥(权威机构的公钥内置在操作系统当中),针对证书中的加密签名进行解密,得到初始签名(这个签名是权威机构算出来的设为sum1);
计算现在的签名: 客户端使用相同的签名计算算法,基于证书中的属性重新计算,得到sum2;
比较两个签名是否相同: 如果相同,说明证书中的数据是未被修改的原始数据,如果签名不同,说明证书的数据被篡改过,客户端的浏览器就会弹窗报错。
在这个过程中,黑客可以得到我们发送的证书,也可以修改,不过黑客修改过后,客服端在用权威机构的公钥解密后的签名与计算后得到的现有签名会出现不一致,这个时候我们就知道被攻击了。
欢迎加入我的知识星球,全面提升技术能力。
👉 加入方式,“长按”或“扫描”下方二维码噢:
星球的内容包括:项目实战、面试招聘、源码解析、学习路线。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)