大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
HTTPS之白话解读
在解读这个之前,先讲一下什么叫对称加密,什么叫非对称加密:
通俗理解:
对称加密,一个盒子,两把钥匙,两把钥匙都可以锁和开锁。
非对称加密,一个盒子,一个私人钥匙,很多公共的钥匙。
两种情况:
1,私人的钥匙能锁能开锁,公共的钥匙,只能开锁,不能上锁
2,私人的钥匙能锁能开锁,公共的钥匙,只能上锁,不能开锁
改革春风吹进家,江南贸易遍开花。
随着改革开放的推进,小K家里的生意也越做越好,正洽迎上互联网的浪潮,于是乎小K决定,把他家的袜子,通过网络销售出去,于是小K花了一天搭建了网站,买了域名,第二天就打算发布网站,专业卖袜子的网站。
但是小K是个干大事的人,想法很有前瞻性,很周全,他想,自己的袜子要卖得好,自己的网站要做的好,那就要自己的网站,得到客户的认可。
那我就要对客户的信息,交易过程保密,不能让我的客户在互联网上裸奔。不能让黑客知道我客户的用户名密码,知道客户在我这里买了什么颜色的袜子。
所以,我打算对我和用户的交流信息,加密(对称加密):
1,用户访问我网站的的时候,做了一个盒子,两把钥匙,自己留一把,然后把用户访问的消息,放到盒子里,连同钥匙一起发送给我。只有这两把钥匙,才能打开盒子。
在后续的沟通交流中,我们都用这个钥匙和盒子。
2,但是,小K发现个问题,如果,用户访问我,在把钥匙和盒子给我的这个过程,被黑客拦截了,那黑客是不是就可以冒充我,在后续伪装成我,去和用户沟通,买假袜子给用户,或者收了客户的钱不给用户发货。这不破坏我名声也坑用户吗?所以,用户这样直接把钥匙给我,这样不安全。
3,于是,小K决定,要对用户给我发钥匙的这个过程,再做次加密(非对称加密,这里用了非对称加密的第一种情形)。
用户访问我小K的时候,小K给你一把钥匙,一把公共的钥匙,和一个打开的盒子,用户拿到这个公共的钥匙之后,就把你的钥匙 放在我的盒子里。然后用我给你的钥匙把盒子锁起来。返回给我。我给你的钥匙,只能锁,不能打开。全世界,只有我自己的私人钥匙,能够
打开这个盒子了。这样就能保证,你的钥匙,不会被别人拿走拉。
4,但灵光一身,小K又发现一个问题,我把我的这个公共的钥匙,给用户的这个过程,不安全啊,这个过程万一被黑客伪装了怎么办呢?
黑客拿一个假的公共钥匙发给客户,那客户不就被骗了么?怎么办呢?
继续对我发公共钥匙给用户这个过程加密?再加密,不就鸡生蛋,蛋生鸡无线循环了么?小K绞尽脑汁。
这时候跳出来一个叫CA得。CA说:别担心,你不就是怕,别人伪装你的公共钥匙吗?我,CA,可以帮你证明,只有你的公共钥匙是有效的。我说了就算,别问我为什么。我只能告诉你我很牛批,我代表正义,大家都信我。你以后就给我一年交几千块钱就行了,我帮你证明,你就是你。
小K说那好吧,既然大家都信你,我也信你。
于是,小K给CA交钱,CA给小K颁发证书,一本证明小K的共公钥匙有效的证书(证书中其实是带有CA加密过的小K的公共钥匙)。小K就把自己的证书存着。
用户访问的时候,小K就把自己加的证书复制一份,带着公共钥匙,一起发给用户。
5,用户拿到了证书,和公共钥匙,就要去验证一下,这个公共证书是真的假的。有没有到期。
这个证书,其实是CA的私人钥匙加密过的(非对称加密),放在一个只有CA能锁上的盒子里。互联网钟的每一台电脑,都存有打开它的钥匙。
CA证书里面,还有一张公共钥匙的照片。用户通过自己电脑的公共钥匙,打开盒子,翻开证书,用照片去和传过来的公共钥匙,做对比,
没问题,那就算认证通过了。(黑客,是没办法去串改公共钥匙的,改了之后,就会和CA盒子里的对不上。如果黑客去打开了这个盒子,去改
了证书,那这个盒子,黑客是没办法锁上的,因为只有CA的钥匙才能锁住。这里用了上面说的非对称加密的第二种情形)
6,用户拿到了服务器给的可靠可信的公共的钥匙和盒子,然后弄两把钥匙,自己留一把,另外一把,放在服务器的盒子里,用公共的钥匙,锁 起来,返还给服务器。
7,服务器拿到这客户端返还的盒子,用自己的全宇宙唯一的私人钥匙,打开盒子,取出客户端给的钥匙。至此,全球唯一的两把钥匙,一把在服务器手里,一把在客户端手里。后续的沟通就依赖这两把钥匙,来为各自的交流保价护航。
至此,整个HTTPS加密过程完结。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186634.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...