握手协议是如何在SSL VPN中发挥作用的?

news2024/11/15 15:59:32

SSL握手协议:客户端和服务器通过握手协议建立一个会话。会话包含一组参数,主要有会话ID、对方的证书、加密算法列表(包括密钥交换算法、数据加密算法和MAC算法)、压缩算法以及主密钥。SSL会话可以被多个连接共享,以减少会话协商开销。

握手第一阶段:

建立起安全能力属性,客户端发送一个ClientHello消息,包括以下参数:

版本:消息中协议版本是两个byte长度分别表示主次版本。目前SSL拥有的版本有SSLv1、SSLv2、SSLv3以及TSLv1(即SSLv3.1)。

随机数:32位时间戳+28字节随机序列,用于在后面计算所有消息的摘要或计算主密钥。

会话ID:SSL会话ID标识一次会话用,可以重用。

客户端支持的密码算法列表(CipherSuite):密钥套件列表,列表中包含了Client端支持的所有密钥套件。

客户端支持的压缩方法列表:客户端支持的压缩算法列表,填0表示空。

当服务器收到包含以上信息的ClientHello消息后,服务器发送ServerHello消息,并包括以下参数:

版本:服务器拿出ClientHello消息中的版本号,再看看自己支持的版本列表,选择两者都支持的最高版本号定为这次协商出来的SSL协议使用的版本。

服务器产生的随机数:此处产生的随机数与ClientHello消息中的类似。

会话ID:服务器端检测到传过来的Session ID是空或者检索Session列表没有发现传过来的Session ID就会新建一个。

服务器从客户端建议的密码算法中挑出一套(CipherSuite)密码算法。

服务器从客户端建议的压缩方法中挑出一个压缩算法。

第二阶段:

Certificate消息(可选)

一般情况下,除了会话恢复时不需要发送该消息,在SSL握手的全流程中,都需要包含该消息。消息包含一个X.509证书,证书中包含公钥,发给客户端用来验证签名或在密钥交换的时候给消息加密。

Server Key Exchange(可选)

根据之前在ClientHello消息中包含的CipherSuite信息,决定了密钥交换方式(例如RSA或者DH),因此在Server Key Exchange消息中便会包含完成密钥交换所需的一系列参数。

Certificate Request(可选)

服务器端发出Certificate Request消息,要求客户端发他自己的证书过来进行验证。该消息中包含服务器端支持的证书类型(RSA、DSA、ECDSA等)和服务器端所信任的所有证书发行机构的CA列表,客户端会用这些信息来筛选证书。

ServerHello Done

该消息表示服务器已经将所有信息发送完毕,接下来等待客户端的消息。

第三阶段:

Certificate(可选)

如果在第二阶段服务器端要求发送客户端证书,客户端便会在该阶段将自己的证书发送过去。服务器端在之前发送的Certificate Request消息中包含了服务器端所支持的证书类型和CA列表,因此客户端会在自己的证书中选择满足这两个条件的第一个证书发送过去。若客户端没有证书,则发送一个no_certificate警告。

Client Key exchange

根据之前从服务器端收到的随机数,按照不同的密钥交换算法,算出一个pre-master,发送给服务器,服务器端收到pre-master算出main master。而客户端当然也能自己通过pre-master算出main master。如此以来双方就算出了对称密钥。

Certificate verify(可选)

只有在客户端发送了自己证书到服务器端,这个消息才需要发送。其中包含一个签名,对从第一条消息以来的所有握手消息的HMAC值(用master_secret)进行签名。

第四阶段:

建立起一个安全的连接,客户端发送一个Change Cipher Spec消息,并且把协商得到的CipherSuite拷贝到当前连接的状态之中。然后,客户端用新的算法、密钥参数发送一个Finished消息,这条消息可以检查密钥交换和认证过程是否已经成功。其中包括一个校验值,对客户端整个握手过程的消息进行校验。服务器同样发送Change Cipher Spec消息和Finished消息。握手过程完成,客户端和服务器可以交换应用层数据进行通信。

SSL VPN通过虚拟网关来进行身份认证和角色授权.主要业务:WEB代理、文件共享、端口转发、网络扩展、用户认证

身份认证:本地认证、服务器认证、证书认证

角色授权:本地授权、服务器授权

SSL VPN服务器通常部署在企业出口防火墙的内部,而华为多款USG系列产品可以直接作为SSL VPN服务器。上海腾科教育专注于提供专业的华为认证培训指导,并在此基础上进一步拓展资源,为学员提供大厂内部推荐岗位的机会;不仅深入细致地帮助学员熟练掌握网络安全领域的各项先进技术,还构建了一套全面的就业指导体系,为学员的职业发展保驾护航。

了解更多大厂就业知识,跟上海腾科教育一起实现梦想。

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

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

相关文章

数字化转型:基于价值流的业务架构战略解析

在当前数字化浪潮下,企业纷纷转向数字化转型,以适应市场需求的快速变化和技术革新。数字化转型不仅仅是技术层面的变革,更是对企业业务模式、文化以及价值创造方式的全面重新思考和重塑。《价值流(Value Streams)》为企…

Mac终端字体高亮、提示插件

一、安装配置“oh my zsh” 1.1 安装brew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 按照步骤安装即可,安装完成查看版本 brew -v 1.2 安装zsh brew install zsh 安装完成后查看版本 zsh --version 1.3 …

什么是CRM系统?

越来越多的企业意识到:如何有效管理与客户的关系、提升客户满意度,并通过这些提升推动销售增长,已经成为许多公司亟待解决的问题。为此,客户关系管理(Customer Relationship Management,简称CRM&#xff09…

Ilya Sutskever AI行业将进入一个新的“探索时代”

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

MySQL(5)【数据类型 —— 字符串类型】

阅读导航 引言一、char🎯基本语法🎯使用示例 二、varchar🎯基本语法🎯使用示例 三、char 和 varchar 比较四、日期和时间类型1. 基本概念2. 使用示例 五、enum 和 set🎯基本语法 引言 之前我们聊过MySQL中的数值类型&…

湾区聚力 开源启智 | 2024 CCF中国开源大会暨第五届OpenI/O启智开发者大会闪耀深圳

当下,全球数字化浪潮席卷而来,开源技术已成为科技创新和产业升级的关键驱动力。11月9-10日,以“湾区聚力 开源启智”为主题的2024 CCF中国开源大会在深圳隆重举行。本届大会由中国计算机学会主办,CCF开源发展委员会、鹏城实验室、…

Linux基本指令(中)(2)

文章目录 前言一、echo二、cat三、more四、less五、head六、tail七、date八、cal九、find十、whoami十一、clear总结 前言 承上启下,我们再来看看另外一些常用的基础指令吧! 一、echo 语法:echo [选项] [字符串] 功能:在终端设备上…

MYSQL中JDBC的使用

一、JDBC基础概念 JDBC 是Java 中的一组API,用于执行SQL 操作(例如CRUD 操作:增、删、改、关系),同时可以和各种类型的数据库类型进行连接(MySQL、Oracle、SQL Server 等)。 JDBC是Java标准库的…

UnixBench和Geekbench进行服务器跑分

1 概述 服务器的基准测试,常见的测试工具有UnixBench、Geekbench、sysbench等。本文主要介绍UnixBench和Geekbench。 1.1 UnixBench UnixBench是一款开源的测试UNIX系统基本性能的工具(https://github.com/kdlucas/byte-unixbench)&#x…

基于Java Springboot人力资源管理系统

一、作品包含 源码数据库设计文档万字全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA 数据库:MySQL8.0…

使用OpenCV(C++)通过鼠标点击操作获取图像的像素坐标和像素值

使用OpenCV(C)通过鼠标点击操作获取图像的像素坐标和像素值 在这篇博客中,我们将介绍如何使用OpenCV库在C中实现鼠标点击操作,以获取图像的像素坐标和像素值。代码分为两个部分:一个是鼠标事件处理的回调函数&#xff…

Windows VSCode .NET CORE WebAPI Debug配置

1.安装C#插件 全名C# for Visual Studio Code,选择微软的 2. 安装C# Dev Kit插件 全名C# Dev Kit for Visual Studio Code,同样是选择微软的 3.安装Debugger for Unity 4.配置launch.json 文件 {"version": "0.2.0","config…

AI斩获6枚金牌!华为Kaggle大师级智能体诞生,自主解决数据科学难题

继 OpenAI o1 成为首个达到 Kaggle 特级大师的人工智能(AI)模型后,另一个 Kaggle 大师级 AI 也诞生了。 根据 Kaggle 的晋级系统,由华为诺亚方舟实验室和伦敦大学学院团队联合推出的端到端自主数据科学智能体(agent&a…

[Mysql基础] 表的操作

一、创建表 1.1 语法 CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; 说明: field 表示列名 datatype 表示列的类型 character set 字符集,如果没有指定字符集…

04 简单神经网络推导及实现(C++/C)

简单神经网络推导及实现(C/C) 代码见A simple neural network - stock price prediction as an example(C/C) 1. 主要模块 Neuron.h:用于声明神经元类和构造函数。Layer.h:用于声明网络层类和构造函数。NNet.h:用于…

Mybatis配置文件的增删改查功能

Mybatis配置文件的增删改查功能 查询—条件查询 //resources里面的org.example.mapper中的BrandMapper.xml文件 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://…

【2024软考架构案例题】你知道什么是 RESTful 风格吗?

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

51单片机应用开发---LCD1602显示应用

实现目标 1、了解LCD1602液晶屏&#xff1b; 2、掌握驱动程序的编写&#xff1b; 3. 具体目标&#xff1a;在屏幕上显示字符。 一、LCD1206概述 1.1 定义 LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置…

如何修改npm包

前言 开发中遇到一个问题&#xff0c;配置 Element Plus 自定义主题时&#xff0c;添加了 ElementPlusResolver({ importStyle: "sass" }) 后&#xff0c;控制台出现报错&#xff0c;这是因为 Dart Sass 2.0 不再支持使用 !global 来声明新变量&#xff0c;虽然当前…

【原创】java+ssm+mysql校园疫情防控管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…