Http和Https的区别

http中请求协议包和响应协议包的内容
在这里插入图片描述

http协议的特点:
1.请求应答模式,http1中有请求才会有响应,在http2中增加了服务端推送模式
2灵活可扩展,请求协议包各种各样的参数可以自已设定,并且传送的内容灵活,有json,视频,图片文本的等在响应体中,只需要指定content-type的类型进行解析即可
3可靠传输(在tcp/udp基础之上的协议,使用tcp协议来保证的可靠传输)
4无状态的,再次建立连接之后,并不知道是谁,可以靠session和cookie来确认用户的信息。

http协议为什么不安全?
1泄漏问题:使用明文传输,使用抓包工具可以查看数据包中的内容
2篡改问题:可以修改请求,比如转账时,接收钱的账号被修改了,就麻烦
3冒充问题:不能验证通信双方的信息,如果坏人把连接发给你,伪造的一个银行网站,当你输入银行卡密码账户验证码之后,信息就会丢失,非常危险。

所以就要解决这些不安全的问题引入了https协议

https协议引进的思路

针对泄漏问题,可以使用加密的方式来解决,所以涉及到加密的方式,有摘要加密算法,对称加密算法和非对称加密算法。

1摘要加密算法就是使用hash,如md5,sha256,将不定长的转化成定长的,然后再进行解密
2对称加密算法des,优点是比较快,缺点是密钥传输过程如果被截获,肯定不行。再次用户端密钥保存(因为用户访问不同的网站要保存不同网站的密钥)和生成(对不同的用户也要生成不同的密钥)也都非常的麻烦。
3非对称加密算法rsa算法:有服务端生成一对公钥和私钥,将公钥发送给客户端,私钥自己留着,可以将相同的公钥发送给所有的客户端,因为私钥自己掌握,因此可以解决用户端和服务端的密钥保存和生成问题。缺点是加密的效率低,计算变慢了。

但是只简单的使用非对称加密会产生中间人攻击的问题。也就是中间一个服务器截取服务器的公钥,然后自己伪造一个公钥和私钥发送给客户端,客户端收到伪造的公钥,将信息使用公钥加密之后,发送给伪造的服务器,此时服务器还是会拿着你的信息去登录真正的服务器。
在这里插入图片描述
怎么样解决中间人攻击这个问题呢,就是判断这个公钥是不是真的,够不够权威,因此需要使用数字证书来确定公钥的权威性,那确定颁发证书的机构叫做证书授权中心也就是CA。
但是因为证书是公开的,就有可能出现以下问题

1骗子把你的申请的证书放在他的网站上来冒充你?
在这里插入图片描述

不可以,因为证书颁发是给服务器的域名进行颁发,如果你直接使用别人的域名下的证书放到你自己的网站下,会拦截。并且即使可以,证书中的公钥对应的私钥,没有私钥,也不可以进行解密。
2将证书中的公钥换成自己的公钥该怎么办?
此时就需要验证当前的证书是否被篡改过,需要使用签名技术来保证明文没有被篡改过。当申请一个证书之后,里面会包含一个公钥,先将公钥进行hash算法后变成一个定长的摘要A来表示当前公钥的简单加密,然后对简单加密之后的公钥A进行再次加密,变成指纹B,都放在证书里进行颁发。然后客户端收到证书之后,将获取的公钥进行金国hash算法之后再次加密得到A,然后将收到的指纹B进行解密(如果没有被篡改的话,解密之后的指纹B,就是A),对比两者是否相同,如果相同肯定就没有被篡改过。
在这里插入图片描述
为什么使用hash算法来保证当前的签名没有被篡改?因为hash算法具有不可逆的特性。只要被修改,再次经过hash之后,一定是不相同的,一般使用公钥加密私钥解密,但是在进行签名验证的时候,使用私钥加签,公钥验签。
在这里插入图片描述还有一个问题就是,谁来保证ca发送的证书是具有权威性性的?
因为再一开始这些机构就已经再操作系统上进行注册,叫做根证书,用来证明证书的有效性的证书。

以上可以保证了消息一定不会被篡改替换之类的安全性,服务器端将公钥发送给客服端,但是只能保证当前发送消息到服务端可以被解密,但是当服务端响应消息时,如何对此消息进行解密?难道我自己要生成私钥公钥对将公钥发送给服务端吗?显然是不可能的!
实际上ca颁发的证书等并不是用来通信的,只是用来协商会话密钥的。再真正通信时,不用非对称加密的,非对称加密只是用来证明服务器身份的有效性的,然后验证好合法性之后,会协商会话密钥,产生随机数来作为此次连接的会话密钥的,然后使用此密钥进行加密,也就是再进行通信时,使用的对称加密算法!
即:认证—》协商—》通信
在这里插入图片描述

总结:Http和Https的区别

HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前的网易官网是http,而网易邮箱是 https 。)

2、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。

3、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值