HTTP与HTTPS的基本概念
HTTP:超文本传输协议,是互联网中应用最为广泛的传输协议。设计该协议的目的则是为了提供一种获取HTML页面的方法,HTTP协议是以明文发送信息的,如果黑客截取了浏览器与服务器之间传输的报文,就可以直接获取其中的信息。
HTTP原理:
客户端浏览器基于TCP与服务器建立连接,端口号一般为80
客户端发送请求
服务器接收请求并进行逻辑处理给客户端返回数据
客户端与服务器断开连接
客户端与服务器建立的连接是一次性连接,每次连接只处理一个请求,在请求处理完毕之后立即断开连接,如果想要再次请求就必须再次连接。
HTTPS:以安全为目标的HTTP通道,是HTTP的安全版。HTTPS的安全基础是SSL协议,SSL协议位于TCP/IP协议与各种应用层协议之间,SSL协议可分为两层:SSL记录协议与SSL握手协议。SSL记录协议:建议在TCP/IP可靠的协议上,为高层协议提供数据封装、压缩、加密等基本功能支持。SSL握手协议:建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方的身份认证,协商加密算法,交换加密密钥等。
HTTPS的设计目标:
数据保密性:保证数据在传输的过程中不会被第三方查看。
数据完整性:能够及时发现数据被第三方篡改的内容。
身份校验安全性:保证数据到达用户期望的目的地。
HTTPS的原理:
- 客户端将它所支持的算法列表和产生密钥的一个随机数发送给服务器
- 服务器从算法列表中选择一种算法,并将它和一个包含服务器公用密钥的证书返还给客户端,服务器还同时提供了一个产生密钥的随机数
- 客户端对服务器的证书进行验证,并抽取证书中的公用密钥,然后在产生一个密码串,然后用密钥对其进行加密,然后将加密后的信息发送给服务器
- 客户端与服务端根据密码串以及客户端与服务端的随机数值独立计算出加密与MAC密钥
- 客户端将所有握手消息的MAC值发送给服务器
- 服务器将所有握手消息的MAC值发送给客户端
Http与Https的区别
- Http协议是超文本传输协议,Https协议是具有SSL加密的安全传输协议。
- Http与Https采用的连接方式不一样,两个协议使用的端口号也不同,Http使用80端口,Https使用443端口。
- Http是无状态连接方式(无状态为客户端与服务端的发送与接收是独立的)Https是SSL+Http协议构建的可进行加密,身份认证的传输协议,比Http安全。
Https的缺点
- Https协议握手阶段比较费时,所以页面加载需要时间
- Https协议需要耗费一定量的计算机资源,成本增加
- Https协议的安全是有范围的
- Https协议的加密范围比较有限
- SSL证书需要绑定IP,所以会消耗IP资源