网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
2 非对称加密
所以,只要是对称加密,就会陷入死循环,只能依赖非对称加密。
- 非对称加密的私钥放在电商网站,不会在互联网上传输,保证该秘钥的私密性
- 但对应私钥的公钥,可在互联网随意传播,只要电商网站把这个公钥给你,你们就能愉快互通
比如你用公钥加密,说“我要买娃娃”,黑客在中间就算截获这个报文,因为它没有私钥,解不开,所以该报文能顺利到达电商网站,电商网站再用私钥解密这个报文,然后回复,“那给我银行卡和支付密码吧”。
其实还是有问题的。回复的这句话,是电商网站拿私钥加密的,互联网上人人都可以把它打开,当然包括黑客。
那电商网站可以拿公钥加密吗?
不能,因为它自己的私钥只有自己知道,谁也解不开。
而且黑客也能模拟发送“我要买娃娃”,因为它也拿得到电商网站的公钥。
所以一对公钥私钥远远不够,客户端也要有自己的公钥和私钥,并且客户端要把自己的公钥,给电商网站。
这样,客户端给电商网站发送时,用电商网站的公钥加密。
而电商网站给客户端发消息时,使用客户端的公钥。这样就算有黑客企图模拟客户端获取一些信息或半路截获回复信息,由于没有私钥,就无法打开这些信息。
数字证书
不对称加密也面临同样问题,如何将不对称加密的公钥给对方:
- 放在一个公网地址上,让对方下载
- 在建立连接时,传给对方
俩方案有相同的问题:作为一个普通用户,如何甄别别人给你的公钥是对的。
会不会有人冒充电商网站,发给你一个它的公钥。接下来,你和它所有的互通,看起来都是没有任何问题的。毕竟每个人都可以创建自己的公钥和私钥。
例如,我自个儿搭建了一个网站xxxsite,先创建私钥:
openssl genrsa -out xxxsiteprivate.key 1024
然后,再根据这个私钥,创建对应的公钥。
openssl rsa -in xxxsiteprivate.key -pubout -outcliu8sitepublic.pem
这时候就需要权威部门介入,就像每个人都可以自己打印简历,说自己是谁,但最后还是要有公安局证明的比如身份证,才能证明你是你。这个由权威部门颁发的称为证书(Certificate)。
证书
里面有啥:
- 公钥
最重要的 - 证书的所有者
就像身份证上有你的姓名和身份证号,说明这个身份证是你的 - 证书的发布机构和证书的有效期
就像身份证上的机构是哪个区公安局,有效期到xx年
如何生成证书?
会不会有人假冒权威机构颁发证书呢?就像有假身份证一样。
生成证书需要发起一个证书请求,然后将该请求发给一个权威机构去认证,这个权威机构称为CA( Certificate Authority)。
证书请求可以通过这个命令生成。
openssl req -key xxxsiteprivate.key -new -out cliu8sitecertificate.req
将这个请求发给权威机构,权威机构会给这个证书卡一个章,我们称为签名算法。
怎么签名才能保证是真的权威机构签名的呢?
用只掌握在权威机构里的东西签名才行,这就是CA的私钥。
签名算法
对信息做一个Hash计算,得到一个Hash值,该过程是不可逆的,即无法通过Hash值得出原信息内容。
把信息发送出去时,把这个Hash值加密后,作为一个签名和信息一起发出去。
权威机构给证书签名的命令是这样的。
openssl x509 -req -in xxxsitecertificate.req -CA cacertificate.pem
-CAkey caprivate.key -out xxxsitecertificate.pem
该命令会返回Signature ok,xxxsitecertificate.pem
就是签过名的证书。CA用自己的私钥给电商网站的公钥签名,就相当于给电商网站背书,形成了外卖网站的证书。
该证书的内容:
openssl x509 -in xxxsitecertificate.pem -noout -text
- Issuer
证书是谁颁发的 - Subject
证书颁发给谁 - Validity
证书期限 - Public-key
公钥内容 - Signature Algorithm
签名算法
你不会从电商网站得到一个公钥,而是会得到一个证书,该证书有个发布机构CA,你只要得到这个发布机构CA的公钥,去解密电商网站证书的签名,解密成功,Hash也对的上,就说明这个电商网站的公钥没问题。
想验证证书,就需要CA的公钥,但怎么确定CA的公钥就是对的?
所以,CA的公钥也需要更牛的CA给它签名,然后形成CA的证书。
要想知道某CA的证书是否可靠,要看CA的上级证书的公钥,能不能解开这个CA的签名。
就像你不信区公安局,可以打电话问市公安局,让市公安局确认区公安局合法性。层层上去,直到全球皆知的几个著名大CA,称为root CA,做最后背书。
HTTPS的工作模式
非对称加密在性能上不如对称加密,能将结合二者优点呢?
如,公钥私钥主要用于传输对称加密的秘钥,而真正的双方大数据量的通信都是通过对称加密进行的。
可以的!这就是HTTPS协议的总体思路。
登录一个电商网站时,由于是HTTPS,客户端会发送Client Hello消息到服务器,以明文传输TLS版本信息、加密套件候选列表、压缩算法候选列表等信息。还有一个随机数,在协商对称密钥的时候使用。
这就类似在说:“您好,我想购物,但你要保密我买的啥。这是我的加密套路,再给你个随机数,你留着。”
然后,电商网站返回Server Hello消息,告诉客户端,服务器选择使用的协议版本、加密套件、压缩算法等,还有一个随机数,用于后续的密钥协商。
这就像在说:“您好,保密没问题,你的加密套路还挺多,咱们就按套路2吧,我这里也有个随机数,你也留着。”
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新