3.1 使用对称密钥
一个正常的客户端服务器:
此时如果有黑客入侵:
既然是不同的客户端有不同的密钥,此处就要求客户端在连接到服务器的时候,自己先生成一个密钥,让每个客户端各自生成各自的密钥,互不相关,也就生成了不同的密钥了
既然客户端需要自己生成一个密钥 , 如何把这个密钥告诉服务器呢?? 网络传输
看起来是需要针对key也进行加密,难道要生成一个 key2,使用 key2 加密 key??key2 也得告诉服务器谁来加密 key2??走到这里此路就走不通 , 需要考虑其他方法——非对称密钥
3.2 引入非对称密钥(面试高频问题)
逻辑过程(至关重要,面试高频)
服务器生成一对公钥(pub)和私钥(pri),在这里公钥要别人 , 私钥留着自己用客户端生成一个对称密钥key:客户端希望把自己的 key 安全传输给服务器,不被黑客拿到客户端给服务器发送请求:大哥你的公钥是啥服务器收到请求之后,返回公钥(pub)给客户端(很明显,这个时候 黑客和客户端都拿到了 pub)客户端使用 pub 针对 key 进行加密客户端就把key 被 pub 加密的密文发送给服务器(当然,黑客也拿到了这个密文,但是由于这个数据是使用 pub 加密的,要想解密 , 只能使用和 pub 成对的这个 pri 才行 , 而黑客是没有 pri 私钥的,黑客无法解密,拿不到 key;服务器有pri,能解密)服务器返回 o k给客户端后续的业务数据,客户端都是使用 key 进行加密此时密文到达黑客这边,由于黑客没有拿到对称密钥key,此时就不可能解析和篡改,就发送到了客户端重复密文传输即可3.3 黑客的手段
安全是“相对的”,可以通过“骗”的方式 , 来放倒客户端的
服务器生成一对公钥(pub)和私钥(pri),在这里公钥要别人,私钥留着自己用客户端生成一个对称密钥key:客户端希望把自己的 key 安全传输给服务器,不被黑客拿到客户端给服务器发送请求:大哥你的公钥是啥服务器收到请求之后,返回公钥(pub)给客户端(此时黑客自己生成一对非对称密钥 pri2 和 pub2,把 pub2发送给客户端,并且记住pub)此时客户端拿到的就是 pub2,然后客户端使用 pub2 针对 key 进行加密客户端就把key 被 pub2 加密的密文发送给黑客(黑客手里有 pub2 对应的 pri2,就可以进行解密,于是拿到了 key;此时黑客继续使用服务器的 pub 对 key 重新加密,把密文发送给服务器)服务器拿到这份加密的数据之后 , 使用 pri 解密,解密成功,拿到对应密钥 key;此时服务器以为客户端的对称密钥是 key,此时返回ok后续的业务数据,客户端都是使用 key 进行加密此时密文到达黑客这边,就可以进行数据的解析,这样数据就透明 了
要想解决中间人攻击,破解的关键在于让客户端信任公钥 , 这个知识点就引入证书
3.4 引入证书
这个“证书”不是一个“纸质”的证书,而是一串数据 , 也是数字证书
引入一个权威机构,负责去颁发证书;比如说我现在有一个服务器,就可以去这个机构申请证书,再申请的时候提交一些资料(并且服务器的公钥也可以一起提交过去 , 此时证书中就包含了服务器的公钥),审核通过之后就会颁发证书
黑客可以知道公钥,也可以对签名进行解密 , 黑客也可以对证书进行同样的校验;校验是人人都可以校验,关键是能改??
客户端给服务器发送请求:大哥你的证书是啥服务器收到请求之后,返回证书给客户端客户端拿到证书之后 , 首先需要进行校验:1??得到初始签名:客户端使用系统中内置的权威机构的公钥 pub2,针对上述证书中的加密签名进行解密,得到初始签名(这个签名是权威机构计算出来的,设为 sum1)2??计算现在的签名:客户端使用同样的签名计算算法,基于证书的属性重新计算,得到 sum23??比较两个签名是否相同:如果相同,说明整数的数据都是未被篡改的原始数据;如果签名不同,说明证书的数据被篡改过,客户端的浏览器弹框报错
文章插图
为什么说黑客不能篡改??? 安全的关键不是黑客“看不到”,而是黑客“篡改不了”
1??黑客把证书的服务器的公钥(pub) , 替换成自己的公钥2??黑客针对证书的各个属性 , 重新计算签名3??黑客需要把签名 重新加密 , 要想加密,务必需要知道权威机构的私钥,然而这个事情,黑可是不知道的
3.5 捋一捋通过对称密钥:来保证业务数据的安全使用非对称密钥:来安全传输对称密钥通过中间人攻击:黑客能拿到对称密钥引入证书:使客户端能够验证该公钥是否合格 (客户端如何让检验证书,是关键环节)
上述过程,尽量用 画图 来讲解
3.6 SSL/TLS
上述介绍的这一套:对称加密 + 非对称加密 + 证书(这一套也叫 SSL/TLS) 这一套流程,不仅仅是 HTTPS会涉及到,其他场景也会用到 SSL(SSL协议),所以说 HTTPS = HTTP + SSL
三、HTTP 与 HTTPS 区别(高频面试题) HTTP协议是超文本传输协议 , 数据是明文传输,具有安全风险,HTTPS是具有安全性的SSL加密传输协议,对数据进行加密传输HTTPS协议需要向权威机构申请数字证书,保证服务器的身份是可信的HTTP的连接相对简单 , 只需要经过TCP的三次握手就可以进行数据传输,而HTTPS的连接需要经过TCP的三次握手后,再经过SSL的握手才能进行加密数据传输两者的默认端口不一样 , HTTP的默认端口是80,HTTPS的默认端口是443四、
HTTP 是前后交互的桥梁;HTTP 服务器 本质上 就是一个 TCP 服务器(HTTP是基于 TCP),这个服务器是按照 HTTP 协议约定,解析请求,构造响应;业界由很多现场的 HTTP 服务器 , 直接可以使用
在 JAVA 圈子里,最知名的 HTTP 服务器,就是(是社区开源的 HTTP服务器,现在 java 生态中,最流行的 http 服务器)
最开始是一个开源项目 , 也是一个 HTTP 服务器(httpd),后来围绕这个项目就形成了一个社区,越来越多的大佬来贡献代码,于是就成立了开源组织 , 有很多开源项目,也是其中的代表作
1??从官网上下载安装: ? -8
下载8;新的不一定好,新的不稳定,可能由一些 bug,像如 jdk 还在用 8,因为仍然由大部分公司还在用,少数在用 11,虽然版本已经到了 19,与我无瓜
2??下载好之后,解压缩到一个能找到的地方,此时就安装完了,这个就属于 纯绿色软件,要想让正确工作,务必保证电脑上装好了 jdk
1.目录介绍
2.服务器的启动
启动双击 .bat;linux/mac 运行 .sh
当我们看到这个框框表示启动完成
1??看看的端口号是否正确绑定: 既然是服务器,势必要绑定一个端口( 默认的端口号是 8080)
win + R:输入 cmd , 确定之后输入-ano |8080 ( -ano——查看系统所有端口号; 8080——找包含 8080 关键字)
2??通过浏览器来访问的欢迎界面:浏览器输入 127.0.0.1:8080
此时这个页面就是通过网络访问了上的内容
3.部署静态页面 3.1 部署博客系统页面
学习为了部署自己的网站,之前我们写了一个 博客系统(前端)
此时重新启动 ;并且在网页中输入:127.0.0.1:8080//.html
所谓的部署一个网站到上,就是把对应的内容拷贝到的目录即可
如果直接双击 html 也能看到页面,为啥还要往上部署呢??上部署和直接双击运行有啥区别??
直接双击是在自己的电脑上打开 ,别人无法访问; 上部署是通过网络访问的、跨主机的(我在我的机器上部署了,别人就可以跨主机通过网络访问到我的页面)
【面试高频必须掌握HTTPS】那么问题又来了:
现在别人的电脑能不能直接访问的的 ???
两种方法:1??我有外网 ip2??别人的电脑和我在一个局域网中(连到同一个路由器)
虽然我的电脑上没有外网 ip,但是我有云服务器(云服务器是由外网 ip,云服务器上的 ) , 就可以部署想要的网站,就能够被别人访问
的基本使用是比较容易的:
1??启动2??把内容拷贝到 ??通过浏览器访问4??使用查看端口
我们要学习的重点是基于进行编程?。?
现在要写网站后端(HTTP 服务器) , 虽然可以重头写一个 HTTP 服务器,但是比较麻烦,已经完成这部分工作,并且给我们提供了一系列 API , 可以让我们在程序中直接调用;此时就可以省去一部分工作(HTTP 服务器肯定要根据 HTTP 协议解析请求报文,还要根据 HTTO 协议 , 构造响应报文,已经弄好了),更专注于业务逻辑了(写的程序要解决什么问题 , 是怎么解决的)
接下来我们将学习 给提供了一系列 API 也叫
- 珠海教师资格证面试考试地点 珠海教资面试成绩
- 手机电池充电必须充满吗 手机电池充电必须充满吗
- 面试作业之浅析京东促销活动核心模型 - DDD
- 硝化细菌必须打氧气吗,硝化细菌放多了会怎么样
- 小散育肥户必须撤离以退为攻等待時机
- 支付宝借呗逾期之后必须一次性偿还吗 蚂蚁借呗逾期多久要求一次性偿还
- 辞职需不需要老板同意 想辞职必须老板批准吗
- 专业风水罗盘 风水罗盘的使用
- 2023台州市公务员考试面试规则公告 2023台州市公务员考试面试规则
- 全套学习!年末阿里百度等大厂技术面试题汇总,附超全教程文档