https解决啦什么问题

https保证数据在传输过程中不被窃取和篡改

http为何不安全

http是明文传输协议,例如你要登录以http的网站,你的账号与密码就会显示在URL中。 而且你修改密码时,你的账号和新密码作为参数也会放在URL上,以及中间商修改你的请求的数据
之前在工作室学习网安时我记得有两个实验就是关于http协议的缺点:

实验一通过URL修改他人密码

假如有http的网站,我知道其他人的账号,但是不知道其密码,我登录我的账号然后对自己的账号和密码进行修改密码,(注意这里不需要旧密码,输入新密码就可以修改自己的密码),当我填写新密码后,我并没有提交,而是将当前页的URL复制下来,你就能看到我修改的新密码与账号,我将URL中自己的账号修改为其他人的,修改完成后将URL放入浏览器,让浏览器发送请求,那吗此时那个人的密码就被修改成功啦

实验二中间商篡改信息实验

中间商篡改信息实验,就是针对http协议的,实验大致就是你浏览器挂上代理服务,而这个代理服务器的地址就是我拿来监听和篡改信息的代理服务器的地址,我在服务器上跑一个代理服务,只要有网络请求经过我代理服务器,我就拦截,如果我不放行,那吗你客户端上网页会一直在转圈(也就是处于加载中),让你误以为网络慢,而我代理服务器会对你的请求进行筛选,假如你要访问百度,我会看我拦截的数据请求中那个是请求百度的,我可以将它修改为访问淘宝,修改完我在放行,你就会去请求淘宝的服务器,客户端就会发现我明明访问的百度,而网页加载出来的却是淘宝。

为何说https 保证数据在传输中不被窃取和篡改

https的前提条件

想要让自己的服务器开启https,前提条件就是你要申请一个证书,我学习服务器时申请的证书为CA证书。没有证书你是无法开启https的。这是必要条件

证书又是啥

证书是一个第三方的权威机构(也就是证书颁发机构)签发的证书,而且证书颁发机构,有公钥与私钥,任何电脑上都会有各个证书机构的公钥,公钥能解读颁发的证书,而且只能读取不能修改,因为你证书里有证书签名。
image.png
申请证书中的公钥key1是啥?
这就要说到加密中的非对称加密

非对称加密

非对称加密:产生一对密钥,一个用于加密,一个用于解密
公钥用于加密,私钥用于解密 公钥就是保险箱, 私钥就是保险箱的钥匙,这个钥匙只有你服务器用其他人是没有的
image.png
而这个公钥就需要给CA证书颁发机构

证书如何做到只能通过CA公钥读取信息,而无法修改

证书里都有啥

image.png
图上的公钥key1就是你服务器本地生成的非对称加密的公钥key

证书签名是啥

image.png
证书签名就像是一个保险,假如你通过一些魔法修改啦证书内容,但是到啦证书检验时就会发现证书内容跟证书签名对不上,那就说明这个证书被人修改过。

证书如何工作的

image.png
当浏览器第一请求服务器时,服务器会给浏览器一个证书,证书里有服务器的公钥,浏览器对证书就行验证,验证通过后通过CA证书的公钥解读出服务器通过非对称加密生成的公钥,而此时浏览器会过证书中解读的公钥对客户端生成的对称加密的key进行加密传输到服务器,服务器通过自己生成的非对称加密的私钥解读浏览器传输过来的客户端生成的对称加密的key ,之后的通讯都会使用客户端对称加密的key对数据进行加密与解密

对称加密有是啥

image.png

总结

这样复杂的交流只会在浏览器第一次请求服务器时才会有,同时也是https为何保证传输过程中不被窃取和篡改信息

http与https的对比图

image.png
https使用的443端口