HTTP及HTTPS协议

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/SSLHTTP协议

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer)是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。 

与HTTP的区别:

  1. HTTPS协议需要到ca申请证书,一般免费证书很少,需要交费。
  2. HTTP是超文本传输协议,信息是明文传输,并且连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全
  3. HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

 HTTPS的架构

SSL协议

SSL(Secure Socket Layer,安全套接字层),位于可靠的面向连接的传输层和应用层之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。 

SSL记录协议层的作用是为高层协议提供基本的安全服务。SSL记录协议针对HTTP协议进行了特别的设计,使得超文本的传输协议HTTP能够在SSL运行记录封装各种高层协议,具体实施压缩解压缩、加密解密、计算和校验MAC等与安全有关的操作

SSL握手协议层包括SSL握手协议(SSL HandShake Protocol)、SSL密码参数修改协议(SSL Change Cipher Spec Protocol)、应用数据协议(Application Data Protocol)和SSL告警协议(SSL Alert Protocol)。握手层的这些协议用于SSL管理信息的交换,允许应用协议传送数据之前相互验证,协商加密算法和生成密钥等。

 协议特性:

  • 保证传输数据的保密性,在握手协议中定义了会话密钥后,所有的消息都被加密。
  • 保证传输数据的完整性,传送的消息要进行完整性检查。
  • 实现通信双方的互相身份认证。

SSL握手

HTTPS握手过程的简单描述如下: 

1.浏览器将自己支持的一套加密规则发送给网站。

2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。

3.获得网站证书之后浏览器要做以下工作:

a) 验证证书的合法性

b) 生成一串随机数的密码,并用证书中提供的公钥加密。

c) 使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。

4.网站接收浏览器发来的数据之后要做以下的操作:

a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。

b) 使用密码加密一段握手消息,发送给浏览器。

5.浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。

详细过程 :

(1)客户端(浏览器)向服务器传送客户端SSL协议的版本号、加密算法的种类、产生的随机数以及其他服务器和客户端之间通信所需要的各种信息。

(2)服务器向客户端传送SSL协议的版本号、加密算法的种类、随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。

(3)客户端利用服务器传过来的信息验证服务器的合法性。服务器的合法性包括证书是否过期,发行服务器证书的CA是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名",以及服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,则通信将断开;如果合法性验证通过,将继续进行第(4)步。

(4)客户端随机产生一个用于后面通信的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤(2) 中的服务器的证书中获得)对其加密。然后将加密后的“预主密码”传给服务器。

(5)如果服务器要求客户进行身份认证(在握手过程中为可选),用户可以建立一个随机数。然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。

(6)如果服务器要求客户进行身份认证,服务器需要检验客户证书和签名随机数的合法性。具体的合法性验证过程包括检查客户的证书使用日期是否有效,为客户提供证书的CA是否可靠,发行CA的公钥能否正确解开客户证书的发行CA的数字签名,以及检查客户的证书是否在证书废止列表(CRL)中。如果校验没有通过,通信立刻中断:如果验证通过,服务器将用自己的私钥解开加密的“预主密码”,然后执行一系列步骤来产生主通信密码(客户端也将通过同样的方法产生相同的主通信密码)。

(7)服务器和客户端用相同的主密码,即“通话密码”,一个对称密钥用于SSL协议的安全数据通信的加解密通信。同时在SSL通信过程中还要确保数据通信的完整性,防止数据通信中的任何变化。

(8)客户端向服务器端发出信息,指明后面的数据通信将使用步骤(7) 中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。

(9)服务器向客户端发出信息,指明后面的数据通信将使用步骤(7)中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。

(10) SSL的握手部分结束,SSL安全通道的数据通信开始。客户端和服务器开始使用相同的对称密钥进行数据通信,同时进行通信完整性的校验。
 

 对SSL数据包的抓取

1、Client Hello

2、Server Hello

 3、服务端的证书

 4、客户端的密钥交换

由上图可以看出后面的进行交互的数据都已经进过加密了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值