HTTP协议
协议概述
HTTP(Hypertext Transfer Protocol)中文 “超文本传输协议”,是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议,是 Internet 上目前使用最广泛的应用层协议,它基于传输层的TCP协议进行通信,HTTP协议是通用的、无状态的协议。HTTP是一个应用层协议,也是互联网上应用最为广泛的一种,所有的HTML文件都是遵循这个标准进行传输的;HTTP的出现是为了提供一种发布和接收HTML页面的方法。
我们使用URL即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。URL由协议、主机和端口(默认为80)以及文件名三部分构成。如:
工作过程
1、请求响应交互模型
2、连接方式
1>非持久性连接
即浏览器每一个每请求一个Web文档,就创建一个新的连接,当文档传输完毕后,连接就立刻被释放
2>持久性连接
即在一个连接中,可以进行多次文档的请求与响应
3>无状态性
即便是同一个客户端(浏览器)第二次访问同一个Web服务器上的页面时,服务器也无法知道这个客户端曾经访问过。HTTP的无状态性简化了服务器的设计,使其更容易支持大量并发的HTTP请求。
但是我们在平时使用浏览器时会发现这样一个现象,就是当我们输入密码登录一些网站后,在一段时间内,如果再次登录这些网站,我们不用输入密码就会自动登录网站,这就引入了HTTP的另一个机制,cookie机制和session机制。
https://blog.csdn.net/weixin_43997530/article/details/105650267 //具体参考这篇文章
HTTPS协议
协议概述
HTTP协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险,而协议TLS/SSL具有身份验证、信息加密和完整性校验的功能,可以避免此类问题,因此我们可以简单的认为HTTPS就是使用TLS/SSL加密的HTTP协议。
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer)是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
与HTTP的区别:
- HTTPS协议需要到ca申请证书,一般免费证书很少,需要交费。
- HTTP是超文本传输协议,信息是明文传输,并且连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全
- HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
HTTPS的架构
SSL协议
SSL(Secure Socket Layer,安全套接字层),位于可靠的面向连接的传输层和应用层之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。
协议特性:
- 保证传输数据的保密性,在握手协议中定义了会话密钥后,所有的消息都被加密。
- 保证传输数据的完整性,传送的消息要进行完整性检查。
- 实现通信双方的互相身份认证。
SSL握手
HTTPS握手过程的简单描述如下:
1.浏览器将自己支持的一套加密规则发送给网站。
2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
3.获得网站证书之后浏览器要做以下工作:
a) 验证证书的合法性
b) 生成一串随机数的密码,并用证书中提供的公钥加密。
c) 使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
4.网站接收浏览器发来的数据之后要做以下的操作:
a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
b) 使用密码加密一段握手消息,发送给浏览器。
5.浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。
对SSL数据包的抓取
1、Client Hello
2、Server Hello
3、服务端的证书
4、客户端的密钥交换
由上图可以看出后面的进行交互的数据都已经进过加密了。