ssl 协议工作过程

devtools/2024/9/19 11:55:29/ 标签: ssl, 网络协议, 网络

ssl 协议工作过程

ChatGPT 说:

ChatGPT

SSL(Secure Sockets Layer)协议是用来确保网络通信安全的加密协议,已被TLS(Transport Layer Security)取代,但它的工作过程仍然是理解现代加密协议的重要基础。以下是SSL协议的工作过程简述:

1. 客户端发起请求(Client Hello)

  • 客户端向服务器发送请求,开始SSL握手。请求内容包括以下信息:
    • 客户端支持的SSL/TLS协议版本。
    • 客户端支持的加密套件(cipher suites),包括对称加密算法、散列算法等。
    • 一个随机数(Client Random),用于后续生成密钥。
    • 支持的压缩算法等。

2. 服务器响应(Server Hello)

  • 服务器接收到客户端的请求后,会选择双方都支持的协议版本和加密套件,并发送响应。服务器的响应包括:
    • 服务器选择的SSL/TLS协议版本。
    • 服务器选择的加密套件。
    • 服务器的数字证书(用于公钥加密),该证书包含服务器的公钥,签发证书的CA(证书颁发机构)信息等。
    • 服务器的随机数(Server Random),用于后续生成密钥。

3. 客户端验证服务器证书

  • 客户端使用预装的根证书对服务器证书进行验证,确保证书是由受信任的CA签发的,并检查证书是否有效。如果验证失败,握手终止。
  • 如果验证成功,客户端生成一个预主密钥(Pre-master Secret)

4. 生成会话密钥

  • 客户端: 客户端使用服务器的公钥对预主密钥进行加密,并发送给服务器。
  • 服务器: 服务器使用自己的私钥解密客户端发送的预主密钥。
  • 双方生成会话密钥: 客户端和服务器根据预主密钥、客户端随机数(Client Random)和服务器随机数(Server Random)通过密钥生成算法生成共享的对称加密会话密钥。这个密钥将用于后续的数据加密。

5. 握手完成(Finished)

  • 客户端:客户端发送一条消息,表示握手结束。这条消息使用对称加密会话密钥加密,目的是验证密钥交换和加密算法是否正常。
  • 服务器:服务器接收消息,并以相同方式响应,确认握手完成。

6. 加密通信

  • 在握手完成后,客户端和服务器使用生成的会话密钥进行加密通信。所有传输的数据都会通过对称加密算法进行加密,确保数据的机密性和完整性。

7. 连接关闭

  • 当通信结束时,客户端和服务器可以协商终止连接,清理使用的加密上下文。此过程不会泄露任何密钥或信息。

总结

SSL工作过程主要分为握手阶段和加密通信阶段。在握手阶段,客户端和服务器协商加密算法,验证服务器身份,并生成共享的对称加密密钥。接下来,在加密通信阶段,使用该对称密钥对后续数据进行加密传输,确保数据的安全性。

安全策略

从原始报文进入GRE隧道开始,到GRE报文被设备转出,这个过程报文跨越了两个域间关系。由此可以将GRE报文所经过的安全域看成两个部分,一个是原始报文进入GRE隧道前所经过的安全域,一个是报文经过GRE封装后经过的安全域,如图1所示。假设DeviceA和DeviceB上interface1接口连接私网,属于Trust区域;interface2接口连接Internet,属于Untrust区域;Tunnel接口属于DMZ区域。

图1 DeviceA上的报文走向

在图1中,PC_A发出的原始报文进入Tunnel接口这个过程中,报文经过的安全域间是Trust—>DMZ;原始报文被GRE封装后,DeviceA在转发这个报文时,报文经过的安全域间是Local—>Untrust。


http://www.ppmy.cn/devtools/112285.html

相关文章

【软件测试】盒木进销存管理系统 需求说明书

目录 1 引言 2 项目概述 3 平台、角色和权限 3.1 Web端 4 Web端需求 4.1 登录/注册页面 4.1.1 业务描述 4.1.2 需求描述 4.1.3 行为人 4.1.4 UI页面 4.1.5 业务规则 4.2 首页 4.2.1 业务描述 4.2.2 需求描述 4.2.3 行为人 4.2.4 UI界面 4.2.5 业务规则 4.3报…

git reset 几点疑问

疑问&#xff1a;使用 git reset --hard <commit-hash-from-branch-B> 将工作区状态reset为其他branch的某点。 如果当前工作区的分支&#xff08;比如 branch A&#xff09;上使用 git reset --hard 将其状态重置为另一个分支&#xff08;比如 branch B&#xff09;的某…

Apache DolphinScheduler 跨工作流复杂依赖功能详解

大家好&#xff0c;我叫高楚枫&#xff0c;来自阿里云 EMR 团队的开发工程师&#xff0c;同时也是 Apache DolphinScheduler 的 PMC 成员之一。 今天非常高兴能在这里和大家分享关于跨工作流复杂依赖的功能详解。 引言 在现代的数据处理和调度过程中&#xff0c;工作流的依赖…

开思通智网-科技快报20240912:人工智能辅助实现复杂糖苷分子检测

【本周新进展】 人工智能辅助实现复杂糖苷分子检测 https://news.sciencenet.cn/htmlnews/2024/9/529548.shtm IFA2024|元鼎智能推出全新“真智能”泳池机器人 https://tech.gmw.cn/2024-09/07/content_37548570.htm 马斯克宣称的“最强AI训练系统”上线 https://news.science…

Pr 入门系列之三:挑选与添加媒体到序列(上)

掌握如何使用源监视器预览和筛选媒体素材&#xff0c;了解新建序列以及设置序列的方法。 ◆ ◆ ◆ 查看及挑选素材内容 源 Source面板&#xff0c;又称源监视器 Source Monitor。其主要作用是&#xff1a;预览源剪辑、选取片段、插入或覆盖剪辑到序列。 双击项目面板里的素材…

项目:构建高可用、负载均衡的高效Web服务器

一、项目需求 实现高可用&#xff0c;防止单点故障&#xff0c;实现负载均衡 负载均衡&#xff1a;将流量分摊给一个或多个后端服务器&#xff0c;提高公司业务的可用性、方便业务后期的水平动态扩展。 二、项目描述 本项目旨在构建一个集高可用性、负载均衡、高效Web服务及…

打包部署若依(RuoYi)SpringBoot后端和Vue前端图文教程

打包后端‘ 1&#xff0c;打开若依&#xff0c;点击右侧的Maven展开Maven管理&#xff0c;选择ruoyi>Lifecycle 先双击clean清除原本启动项目时生成的文件。然后点击package等待项目打包&#xff0c;切记要取消运行再打包 打包完成后会在ruoyi-admin>src>target里面…

leetcode53.最大子数组和

题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组是数组中的一个连续部分。 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4] 输出&…

setImmediate() vs setTimeout() 在 JavaScript 中的区别

setImmediate() vs setTimeout() 在 JavaScript 中的区别 在 JavaScript 中&#xff0c;setImmediate() 和 setTimeout() 都用于调度任务&#xff0c;但它们的工作方式不同。 JavaScript 的异步特性 JavaScript 以其非阻塞、异步行为而闻名&#xff0c;尤其是在 Node.js 环境…

HTTP 四、HttpClient的使用

一、简单介绍 1、简介 HttpClient是Apache Jakarta Common下的子项目&#xff0c;用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包&#xff0c;并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中&#xff0c;比如Apache Jakarta上很著…

BookRecord的登录和注册页面以及相关的viewmodel

ps&#xff1a;这个app既提供普通的登录注册&#xff0c;也提供使用谷歌邮箱进行登录和注册。可以按照自己的需要进行删改 1. 注册页面 RegisterScreen 函数定义了一个可组合的&#xff08;Composable&#xff09;界面&#xff0c;用于用户输入注册信息。它接收一个导航控制器…

Halo 开发者指南——项目运行、构建

准备工作 环境要求 OpenJDK 17 LTSNode.js 20 LTSpnpm 9IntelliJ IDEAGitDocker&#xff08;可选&#xff09; 名词解释 工作目录 指 Halo 所依赖的工作目录&#xff0c;在 Halo 运行的时候会在系统当前用户目录下产生一个 halo-next 的文件夹&#xff0c;绝对路径为 ~/ha…

十二,Spring Boot 异常处理(自定义异常页面,全局异常,自定义异常)

十二&#xff0c;Spring Boot 异常处理(自定义异常页面&#xff0c;全局异常&#xff0c;自定义异常) 文章目录 十二&#xff0c;Spring Boot 异常处理(自定义异常页面&#xff0c;全局异常&#xff0c;自定义异常)1. 基本介绍2. 自定义异常页面3. 全局异常4. 自定义异常5. 补充…

【零基础如何学Python爬虫技术?】

如何入门爬虫&#xff1f;零基础如何学爬虫技术&#xff1f;那前提肯定会是需要学习一门 简单易入门 的编程语言了&#xff0c;就作者而言&#xff0c; python 无疑是最合适的&#xff01;到2014年7月为止&#xff0c;在美国顶尖大学里最受欢迎的计算机编程入门语言中&#xff…

树莓派交叉编译

目录 一、交叉编译的认知 1.1 本地编译&#xff1a; 1.2 交叉编译是什么&#xff1a; 1.3 为什么要交叉编译&#xff1a; 1.4 什么是宿主机&#xff1f;什么是目标机&#xff1f; 1.5 如何进行交叉编译&#xff1a; 二、交叉编译工具链的安装 2.1 下载交叉编译工具&…

建筑机器人通用操作系统设计方案

建筑机器人操作系统通用发行版概述 1. 基础版&#xff08;Entry Level&#xff09; 目标用户&#xff1a;小型建筑公司、DIY爱好者或初学者。特点&#xff1a;提供基础的机器人控制和任务管理功能&#xff0c;支持简单的自动化作业流程&#xff0c;如基础的混凝土搅拌、物料搬…

MySQL5.7-虚拟列

目录 虚拟列的定义和作用 虚拟列和普通列的区别 虚拟列的类型 生成列 语法 存储列 语法 实战&#xff1a;使用MySQL虚拟列解决实际问题 场景描述 表结构 插入数据 查询订单总金额 性能优化 虚拟列使用限制 虚拟列的定义和作用 MySQL虚拟列是一种特殊的列&#xf…

轧钢测径仪对热轧产线实现温度系数自动修正!

钢材在轧制过程中&#xff0c;需要检测外径时&#xff0c;很多都处于高温状态&#xff0c;甚至是1000℃以上&#xff0c;这对轧钢测径仪是个巨大的考验&#xff0c;但测径仪在解决高温、水雾、氧化铁皮、震动等对测量影响的同时&#xff0c;还要考虑钢材热态下的膨胀造成的测量…

查询MySQL数据库所有表名及表结构等信息

序言 之前没有做过这种很基础的需求&#xff1a;查询表结构等信息&#xff0c;这里记录下。 1、查询某个库下某个表是否存在 这里假设数据库名称为&#xff1a;test, 表名为:t_user SELECT COUNT(*) as count FROM INFORMATION_SCHEMA.TABLES WHERETABLE_SCHEMA testAND T…

K8s利用etcd定时备份集群结合钉钉机器人通知

如何通过脚本的方式进行K8s集群的备份 查看K8s中master节点中etcd集群的状态 kubectl get pods -n kube-system | grep etcd由于使用的etcd服务是K8s搭建时自身携带的,并不是独立搭建的etcd集群信息。使用 K8s 搭建集群时,etcd 是 Kubernetes 集成的一个重要组件因此需要查…