网络协议:透彻解析HTTPS协议

news2025/2/21 22:00:02

本篇内容包括:HTTPS 协议概述,SSL 与 TLS(SSL 与 TLS 概述、SSL证书 和 SSL 与 TLS 二者之间关系),以及 HTTPS 下浏览器访问一个网站的全过程的内容!


文章目录

    • 一、HTTPS 协议概述
    • 二、SSL 与 TLS
        • 1、SSL 与 TLS 概述
        • 2、SSL证书
        • 3、SSL 与 TLS 二者之间关系
    • 三、HTTPS 下浏览器访问一个网站的全过程


一、HTTPS 协议概述

HTTPS(Secure Hypertext Transfer Protocol)即安全超文本传输协议,是一个安全通信通道。用于计算机网络的安全通信,已经在互联网得到广泛应用。

HTTPS 是基于 HTTP 的扩展,其相当于 HTTP协议+SSL(安全套接层)/TLS(安全传输层协议)协议加密。因此 HTTPS 也常指 HTTP over SSL 或 HTTP over TLS。

HTTP 的缺点:

  1. HTTP 通信使用明文,内容可能会被窃听。
  2. HTTP 无法验证报文的完整性,所以有可能遭到篡改。
  3. HTTP 不验证通信方的身份,有可能遭遇伪装。

HTTPS 与 HTTP 的区别:HTTP 协议的数据传输是通过明文的形式做传输,即使约定了加密方式,但是第一次传输的时候还是明文;鉴于此,HTTPS使用的是非对称加密,为秘钥的传输外层再做一层保护,非对称加密的一组秘钥对中,包含一个公钥和一个私钥。明文既可以用公钥加密,用私钥解密;也可以用私钥加密,用公钥解密。

  • HTTPS 协议需要到 CA 申请证书;
  • HTTP 是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议;
  • HTTP 和 HTTPS 使用的是完全不同的连接方式,端口也不一样。前者是 80,后者是 443;
  • HTTP 的连接是无状态的,HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 更安全。

006ozJEaly1ghmxkx0s5yj30it06xdgu.jpg

总的来说:HTTPS 目前是最流行的 HTTP 安全形式。使用 HTTPS 时,所有的 HTTP 请求和响应数据在发送到网络之前,都要进行加密。HTTPS 在 HTTP 下面提供了一个传输级的密码安全层: SSL 和 TLS。


二、SSL 与 TLS

1、SSL 与 TLS 概述

SSL(Secure Socket Layer)即,位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL 通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。

SSL 协议可分为两层:

  • SSL 记录协议(SSL Record Protocol):它建立在可靠的传输协议(如 TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
  • SSL 握手协议(SSL Handshake Protocol):它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

img

TLS:安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。TLS 记录协议用于封装各种高层协议。作为这种封装协议之一的握手协议允许服务器与客户机在应用程序协议传输和接收其第一个数据字节前彼此之间相互认证,协商加密算法和加密密钥。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)

SSL/TLS 协议为了解决 HTTP 协议的缺点,希望达到:

  • 所有信息都是加密传播,第三方无法被窃听。
  • 具有校验机制,一旦被篡改,通信双方立刻会发现。
  • 配备身份证书,方式身份被冒充。

SSL 是一个二进制协议,与 HTTP 完全不同,其流量是承载在另一个端口上的(通常是 443),如果 SSL 和 HTTP 的流量都从 80 端口到达,大部分 web 服务器会将二进制 SSL 流量理解为错误的 HTTP 并关闭连接。

2、SSL证书

SSL证书是一种数字证书,可以由组织或个人购买,并允许Web服务器和浏览器之间的安全连接。它通过将加密密钥绑定到组织的详细信息来做到这一点。

证书包含有关证书持有者的姓名、证书序列号和到期日期、证书持有者的公钥副本以及证书颁发机构的数字签名等信息。这会对网站进行身份验证,证明它确实是它声称的网站,而不是冒充该网站的黑客。

在服务器向客户端发送公钥这一过程中,客户端可能会收到黑客假冒服务器发送的假的公钥。为了安全考虑,就需要用到 SSL 证书了。在通信时,服务器将证书发送给客户端,客户端会对证书的真伪进行校验,保证了安全。

从本质上讲,它会验证该站点是否如其所说。

3、SSL 与 TLS 二者之间关系

TLS 是 SSL3.0 的后续版本。TLS 与 SSL3.0 之间存在着显著的差别,主要是它们所支持的加密算法不同,所以 TLS 与 SSL3.0 不能互操作。

SSL 是 Netscape 开发的专门用户保护 Web 通讯的,目前版本为 3.0。最新版本的 TLS 是 IETF(Internet Engineering Task Force,Internet 工程任务组)制定的一种新的协议。最新版本的 TLS1.0,它建立在 SSL3.0 协议规范之上,是 SSL3.0 的后续版本。两者差别极小,可以理解为 SSL3.1。


三、HTTPS 下浏览器访问一个网站的全过程

https的整个通信过程可以分为两大类:证书验证和数据传输阶段。数据传输阶段又分为非对称加密和对称加密两个阶段。

img

具体流程如下:

  1. 首先客户端请求 https 网址,然后连接到 Server 的 443 端口(https 默认端口)。
  2. 采用 https 协议的服务器必须要有一套数字 CA 证书。颁发证书的同时会产生一个私钥和公钥。私钥由服务端自己保存,不可泄漏。公钥则附加在证书中,可以公开。证书本身附带一个电子签名,可以用来验证证书的完整性和真实性,可以防止证书被篡改。
  3. 服务器响应客户端请求,将证书传递给客户端。证书包含公钥和大量其他的信息,比如证书颁发机构信息、公司信息和证书有效期等。
  4. 客户端解析证书并对其进行验证,如果证书不是可信的机构颁布,或者证书的域名与实际域名不一致,或证书已经过期,就会向访问者显示一个警告。如果证书没有问题,客户端就会从服务器证书中取出服务器的公钥A,并生成一个随机码KEY,并使用公钥对其进行加密。
  5. 客户端会把加密后的随机码KEY发送给服务器,作为后面对称加密的密钥。
  6. 服务器在收到随机码KEY之后会使用私钥B将其解密。经过以上这些步骤,客户端和服务器终于建立了安全的连接,接下来可以使用对称加密进行通信了。
  7. 服务器使用密钥(随机码KEY)对数据进行对称加密并发送给客户端,客户端使用相同的密钥解密数据。
  8. 双方使用对称加密传输所有的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/4346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

两种让python输出更加美观的方式,三分钟看完就会

嗨害大家好鸭!我是小熊猫❤ 最近要给大家持续带来干货输出啦! 赶紧收藏起来,以后查漏补缺要用到的喔~ 源码、资料电子书点击这里 1.输出格式美化 Python两种输出值的方式: 表达式语句和 print() 函数。 (第三种方式是使用文件对象的 write…

Web前端开发技术课程大作业——南京旅游景点介绍网页代码html+css+javascript

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有…

二选一工作器引入的Verilog语法

二选一工作器引入的Verilog语法 ——XILINX 基于BASYS 3板 状态机、线性序列机、学习仿真 DDS:矩阵键盘、DAC,LCD/数码管,这些模块间的接口逻辑 常见的接口设计:SPI、IIC、UART 学习:三八译码器、计数器电灯、学习开发工具的使用…

年轻人不用太过于努力

周末和一个毕业一年多的朋友聊天,我随口问了一句「你有什么想跟我分享的」,然后他就说了上面的那句话。「年轻人不用太过于努力」和读者聊天会做成我的一个公众号专栏,内容有也会越来越丰富,全部的内容都会收录到我的程序人生专栏…

RK3568平台开发系列讲解(音频篇)Audio 音量控制流程

🚀返回专栏总目录 文章目录 一、安卓音量控制流程简介二、什么是AudioService沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要介绍安卓音量控制流程。 一、安卓音量控制流程简介 Android音频系统,分为数据流和策略两部分。 数据流描述了音频数据从数据源…

【C++哈希表】哈希碰撞,线性探测,二次探测 ,荷载因子,闭散列的实现及string需要特化

目录 1.哈希概念 2.哈希碰撞 3.解决哈希冲突 4.哈希表闭散列实现 框架: 4.3插入 1.哈希概念 线性表以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。线性表查找…

首届数据安全大赛初赛web

文章目录easy_nodeeasy_webeasy_phar刮刮乐my_cloudeasy_node 访问src得到源码 第一步需要伪造admin用户 可以看到都是通过jwt进行加密解密 很容易想到jwt的几种攻击方式,可以参考下文章https://blog.csdn.net/miuzzx/article/details/111936737 首先试下改为n…

Linux篇【4】:Git,Gitee,GitHub

在 Linux 系统中,如何将普通源文件和普通头文件上传到 Gitee ? Git 是一个分布式的版本控制器,目前可以理解成百度云盘,其次,在 Linux 系统中,Git 也是一个软件/工具/指令,在 Windows 系统中&a…

212 - 218. MySQL索引的基本用法

1.索引的简介 1.1 索引的概念 是数据库对象,实现数据库快速查询 1.2 为什么使用索引 实现数据库快速查询,提高查询速度 1.3 索引的分类 a.普通索引 最基本的索引,对字段数据的类型和值没有任何限制,数据类型可以任意,…

电脑技巧:Win10自带的6个实用功能,你都会用吗

目录 1、系统自带计算器 2、Win10自带截图功能 3、 Win10自带的手写输入 4、历史剪贴板 5、定时提醒 6、自带录屏功能 1、系统自带计算器 系统里自带了一个计算器大家都知道,打开是这个样子。 但当你点击计算器左上角的三个横杠图标后会发现这个计算器功能非常强大。…

Python画爱心——谁能拒绝用代码敲出来会跳动的爱心呢~

还不快把这份浪漫拿走!!节日就快到来了,给Ta一个惊喜吧~ 今天给大家分享一个浪漫小技巧,利用Python制作一个立体会动的心动小爱心 成千上百个爱心汇成一个大爱心,从里到外形成一个立体状,给人视觉上的冲击…

phy层深入了解编码

1,我们知道mac层通过MDI来访问phy层的,那么phy层到光模块数据是怎么处理的呢。从下面这个图中可以看出基本的关系: serdies接口说明: Medium Independent Interface (MII): 介质无关接口。提供公共接口,屏蔽多个物理…

基于haproxy负载均衡实现lamp与apache的高可用

环境准备 IP主机名服务系统192.168.47.10node1ansiblecentos8192.168.47.20node2lampcentos8192.168.47.30node3apachecentos8192.168.47.40node4haproxycentos8 基于上一篇的文章在node3主机上部署apache 一、部署haproxy 准备主机清单组织 //创建角色 [studentserver rol…

服务器没网 利用本地机器反向隧道 设置conda代理配置环境

适用情况 S是局域网内服务器,无法联网。 C为本地机器,可以通过ssh链接服务器。 本篇文章主要为了可以让S可以借用C的网络进行conda环境配置,所采取的设置。 1.利用Xshell建立反向隧道 在连接设置的ssh中点击隧道,点击设置&#…

SpringBoot--网上商城项目(前端搭建、首页、用户登录、盐加密、登录令牌管理)

文章目录 一、项目技术点 数据表 二、构建SpringBoot项目 1、创建SpringBoot项目并配置pom 配置pom 2、application.yml的配置 3、首页访问 三、首页功能 工具类!!! 首页数据绑定语法 四、用户明文登录 五、前端及数据库密码加密 …

C. String Transformation 1(图的思想)

Problem - 1384C - Codeforces 题意: 考拉有两个长度相同的字符串A和B(|A||B|n),由前20个小写英文字母组成(即从a到t)。 在一步棋中,Koa。 (选择A的某个位置子集p1,p2,...,pk(k≥1;1≤pi≤n;…

Codeforces Round #831 (Div. 1 + Div. 2)

A. Factorise NM 题目链接:Dashboard - Codeforces Round #831 (Div. 1 Div. 2) - Codeforces 样例输入: 3 7 2 75619样例输出: 2 7 47837题意:给定一个质数,让我们输出一个质数使得这两个数相加为一个合数。 分…

基于Java的飞机雷电射击游戏的设计实现(Eclipse开发)

目 录 摘 要 I Abstract II 1 引言 3 1.1 项目背景 3 1.2 电脑游戏的发展历史 3 1.3国内游戏项目研究现状 5 1.4项目主要工作 6 1.5本文组织结构 7 1.6 电脑游戏的策划 7 2 开发平台与开发技术 8 2.1 Eclipse 8 2.2 Eclipse平台 8 2.3 Java 9 2.4游戏图形界面的开发基础 11 2.5…

redis启动和简单使用

redis启动和简单使用 1.redis启动 1.1 找到redis解压的位置,在里面输入cmd回车 1.2 输入redis-server redis.conf指令,然后回车,出现如下界面 注意:该界面不能关闭了 1.3 再进入一次redis解压的位置 输入cmd回车 1.4 输入redis-cli指令后的结果 1.5 补充 当出现…

Flink系列文档-(YY05)-Flink编程API-多流算子

1 多流连接 connect connect连接(DataStream,DataStream→ConnectedStreams) connect翻译成中文意为连接,可以将两个数据类型一样也可以类型不一样DataStream连接成一个新的ConnectedStreams。需要注意的是,connect方法与union方法不同&…