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的区别:

  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、客户端的密钥交换

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

HTTP及HTTPS协议相关推荐

  1. loadrunner支持https协议的操作方法-经验总结

    问题:用户portal支持https协议,用loadrunner录制登陆脚本时发现未录制到用户名和密码 录制到的脚本如下: login() { lr_think_time(10); web_url(& ...

  2. https协议原理过程

    https协议原理过程 https概念 https是基于安全目的的Http通道,其安全基础由SSL层来保证.最初由netscape公司研发,主要提供了通讯双方的身份认证和加密通信方法.现在广泛应用于互 ...

  3. HTTP和HTTPS协议的区别

    什么是HTTPS: HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息 ...

  4. 大型网站的 HTTPS 实践(1):HTTPS 协议和原理

    转自:http://op.baidu.com/2015/04/https-s01a01/ 1 前言 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS.本文重 ...

  5. 02.Python网络爬虫第二弹《http和https协议》

    一.HTTP协议 1.官方概念: HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文 ...

  6. iOS ASIHTTPRequest用https协议加密请求

    iOS 终端请求服务端数据时,为了保证数据安全,我们一般会使用https协议加密,而对于iOS的网络编程,我们一般会使用开源框架:ASIHTTPRequest,但是如果使用传统的http方式,即使忽略 ...

  7. Fiddler中安装证书进行https协议的抓取

    Fiddler目前默认安装对http协议进行抓取但是对手机以及其他一些是https协议的通讯抓取需要配置. 首先我们要在fiddler中找到菜单栏的Tools > Options,打开" ...

  8. Https协议/SSL协议

    前言 Https协议是以安全为目标的Http通道,也就是Http的升级安全版.主要是在Http下加入了SSL层(现在主流SSL/TLS),SSL是Https协议的安全基础,Https默认端口号443 ...

  9. curl提示不支持https协议解决方法

    curl提示不支持https协议解决方法 参考文章: (1)curl提示不支持https协议解决方法 (2)https://www.cnblogs.com/biaopei/p/8669810.html ...

  10. nginx 配置https 并解决重定向后https协议变成了http的问题

    nginx 配置https 并解决重定向后https协议变成了http的问题 参考文章: (1)nginx 配置https 并解决重定向后https协议变成了http的问题 (2)https://ww ...

最新文章

  1. PySpider HTTP 599: SSL certificate problem错误的解决方法
  2. 与大疆并称双雄、估值近百亿的极飞科技,现在是一家什么公司?
  3. python设计模式整理
  4. Python-dataframe合并(merge函数)
  5. C++ 类模板遇到继承的问题以及解决
  6. android布局中上下对齐,android – 如何使用相对布局垂直对齐列表中的项?
  7. [转]香农信息论与毒药称球问题
  8. Java WEB之过滤器
  9. 将Excel中的数据导入至sqlserver数据表
  10. 5.Linux性能诊断 --- 追踪技术
  11. 使用EditPlus 3时,如何重新设置HTML Page的Default模板
  12. 视频格式基础知识:让你了解MKV、MP4、H.265、码率、色深等等
  13. 虚拟机安装win10 64/32bit系统
  14. 2019年零售企业营销变革:私域流量池 + 个人IP =流量价值最大化!
  15. 中级软件设计师考试(软考中级)设计模式分类及其典型特点
  16. 8086微处理器介绍
  17. 最新鑫迪自助建站系统源码V1.1完整版
  18. 凡客的面试:Web前端开发
  19. 小孩子爱玩手机学计算机编程好吗,学习编程教育对孩子的哪些重要意义
  20. python爬虫利用线程池下载视频

热门文章

  1. LAMP+WordPress部署(yum) 配置简单 轻松上手 亲测有效
  2. Java毕业设计_基于JAVAWeb和Android的随堂练习软件
  3. QinQ技术与Portal技术
  4. Cesium【卷帘】、图层对比。
  5. 大前端(移动端/桌面应用Electron/微信小程序/小程序、快应用框架)
  6. 懵逼ZJOI2016Round2滚粗记
  7. 多家物流信息如何快速的查询出百世的物流?
  8. 专访罗永浩:之后的对手就是苹果
  9. [转区工具]Locale Emulator的使用及下载
  10. 基于单片机的衣柜除湿照明系统