HTTP和HTTPS

HTTP和HTTPS都是超文本传输(安全)协议,HTTPS是HTTP的安全版本,以安全为目标的HTTP通道,在HTTP基础上通过传输加密和身份验证保证了传输过程的安全性。HTTPS的安全基础为SSL/TLS(安全套接字层)。
SSL和TLS,TLS是在SSL3.0基础上发布的,TLS相当于是SSL的继任者。
HTTP的通信原理:
HTTP是基于客户端/服务器面向连接的,我们把网络分为:应用层,运输层,网络层,数据链路层,物理层。

客户端:一层层封装
	1.构建HTTP请求报文(应用层的工作)
	2.请求报文首部添加TCP报文段(运输层的工作)
		报文段起到路由功能(查询网段,寻址),就好比你出门,你就是报文,你打开导航,导航就是报文段,给你指路的。
	3.在此基础上在首部添加IP数据报(网络层的工作)
		IP数据报明确了源地址,目标地址,(源地址和目标地址都是IP协议的地址),就好比你打开导航,你要输入现在的位置
		和想要到达的位置才可以导航,明确从哪儿来,到哪儿去。
	4.在IP数据报首尾添加帧(数据链路层的工作)
		数据在网络上是以帧为单位传输的(假如我们步行导航是以步为单位的)
	5.通过物理层将构成帧的各比特转换成电信号发送到传输媒体(物理层的工作)
		我们导航一步一步走,导航实时更新,就相当于一点点传输,一帧包含多个比特流,就假设1公里==1000步,
		导航肯定是按照公里来计算距离的呀,我们是一步步丈量构成N个公里。
服务器:一层层拆封
	1.将信号变为bit流,交给数据链路层(物理层的工作)
	2.接收到帧,取出首尾,将IP数据报发送给网络层(数据链路层的工作)
	3.接收到IP数据报,取出IP首部,将TCP报文段发送给运输层(网络层的工作)
	4.接收到TCP报文段后,去掉TCP首部,将HTTP报文发送给应用层(运输层的工作)
	5.接收到HTTP报文,服务器解析,然后响应给客户端。(应用层)

HTTP的传输有很多缺点,例如明文传递,请求响应双方不对身份进行验证,无法得知报文是否被篡改等不安全因素,所以在此基础上,我们可以用HTTPS来传输。

HTTP主要解决了HTTP中的数据窃听、数据篡改、身份伪装等问题。
1.数据窃听:
	HTTPS双方建立了安全通信通道,使用混合加密方式进行加密(对称加密和非对称加密),
	对数据也进行加密,如果没有秘钥,是解不开的。
2.数据篡改:
	HTTPS可以使用数字签名来解决篡改和不可抵赖性,我的上一篇文章有介绍。
3.数字证书:
	解决身份伪装问题,通过CA体系来确定双方是否是正常的(安全是相对的)
	

HTTPS通信原理

大概分为以下几个步骤:
发起请求,验证身份(这个分为单双向验证,即服务器验证客户端,客户端验证服务器,通过数字证书),协商加密,建立通信。

	1.发起请求:
		客户端向服务器发起请求,生成随机数,将随机数和自己可用的加密算法告诉服务器。
	2.验证身份:
		服务器接收数据自己也生成随机数,然后选择一个两者共同支持的加密算法,而后发送数字证书给客户端,
		客户端接收到证书和随机数后,在获取到认证中心的公钥,用认证中心的公钥对服务器发来的数字证书进行解密,
		获得证书,该证书里有服务器的加密算法,公钥,信息等等。
	3.协商加密:
		客户端获得了服务器的加密算法,公钥,和随机数后,在生成随机数(此时有三个随机数了),
		然后将三个随机数通过加密算法生成共享秘钥(自己保存)。在使用服务器公钥对第三个随机数(刚生成的)进行加密,
		将其发送给服务器。
		服务器获取到密文,用私钥解密,获得随机数,然后用相同的加密算法对三个随机数进行加密算法获得共享秘钥。
	4.建立通信。
		双方利用共享秘钥进行加密通信。
注意:用随机数生成共享秘钥更加安全,因为随机数是不可捉摸的。

在这里插入图片描述

HTTPS可以认证客户端和服务器,由SSL/TLS+HTTP构建的加密传输,防止窃取篡改保证了数的完整性。HTTPS不是万能的,没有绝对的安全,只是大幅度增加了中间人攻击的成本。并且SSL不一定是非常安全的,有些国家可控制CA根证书,中间人一样可以攻击。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值