SSL/TLS和SSL VPN

1、SSL/TLS

SSL安全套接字层:是一种加密协议,用于在网络通信中建立安全连接。它在应用层和传输层(TCP/IP)之间提供数据加密、服务器身份验证以及信息完整性验证

SSL只保护TCP流量,不保护UDP协议

TLS:传输层安全协议

在SSH3.0版本后,更名为TLS

SSL协议中包含多个子协议,它们协同工作以确保通信的安全性

SSL握手协议:允许服务器和客户端相互认证,并在应用层协议传输数据之前协商出加密算法,哈希算法,和会话密钥等,然后通过这些参数去构建SSL会话

SSL密码变化协议:只有changecipherspec这一个信息,客户端和服务器都可以发送,目的是通知对端,后续的报文都将使用新协商后的加密套件和密钥进行保护和传输

SSL告警协议:告警机制,用于在SSL通信过程中传递与安全性相关的告警信息

SSL记录协议:用于封装高层协议的数据,对应用层数据加密之后,放置在记录层中

这四个协议并不一定同时会出现,握手协议,密码变化协议和告警协议可能在建立SSL会话时按照顺序出现,在数据传输过程中主要出现的是记录协议

1)SSL工作流程

第一步:TCP三次握手,建立网络连接会话

第二步:Client Hello

客户端的随机数:是生成会话密钥的一个参数,该会话密钥需要三个参数共同计算出来

加密套件:将加密算法、鉴别算法常用的组合搭配在一起,用于进行选择

第三步:Server Hello(SSL服务器回复消息)

注意:一般情况下,server hello和服务器的证书是分开发送的,当然也可以在一个数据包中发送

服务器证书是由CA机构颁布的,是通过CA机构的私钥,将服务器的公钥以及一些证书相关的信息进行加密之后的产物。客户端本身具有信任CA的公钥,则可以使用CA机构的公钥对服务器证书进行解密,之后得到服务器的公钥。
注意:服务器的身份认证是强制要求的,必须提供证书,证书如果不合法,则会提供一个选择给客户,可以选择继续访问。但是客户端的认证是可选的,如果需要认证,则服务器会发送请求证书的报文,之后,需要客户端提供自己的证书

Server key exchange:用于提示密钥变更
Server hello done:一条空信息,用于通知客户端服务器已经做好协商最终密钥的准备

也可以通过一个数据包来发送server hello以及证书等信息。

第四步:客户端回应

Pre-master-key:预主密钥,本质也是一个随机数,用于计算最终的会话密钥,但是这个参数可以被服务器的公钥进行加密传输(电脑生成的随机数是伪随机数,所以使用三个伪随机数计算最终的密钥,会更加安全一些。)

第五步:服务器回应

在客户端中,可以携带这个会话复用票据,用于省略会话建立过程中,身份认证的环节,仅协商算法和密钥即可

会话票据:客户端在下次与服务器通信时,可以携带这个Session Ticket,以告知服务器自己希望复用之前的会话密钥。

如果服务器验证通过Session Ticket的有效性,就可以直接使用其中的会话密钥,而无需再次进行完整的TLS握手过程

1、无客户端认证的握手过程

2、有客户端认证

3、会话复用场景

SSL工作流程总结:在TCP三次握手建立网络连接后,客户端向服务器发送Client Hello与服务器协商参数,服务端回复Server Hello确认参数并发送证书。客户端验证服务器证书,生成并使用服务器公钥加密发送预主密钥。服务器解密预主密钥并生成会话密钥,使用会话密钥进行数据传输

2)SSL协议数据传输流程

1. 分片(Fragmentation):SSL协议会将较大的应用数据分成较小的数据块进行传输,以避免单个过大的数据包可能造成的网络拥塞或处理不当的问题

2. 压缩(Compression):SSL 3.0及其后续版本支持数据压缩功能,以减少通过网络传输的数据量,从而加快数据传输速度并节约带宽

3. 增加HMAC(Hashing):HMAC是一种数据完整性检验方法,用于确保数据的完整性不被破坏。SSL协议使用HMAC来确保消息的完整性,防止数据在传输过程中被篡改。

4. 加密(Encryption):SSL协议通过使用对称密钥加密算法(如AES、DES、3DES等)对应用层数据进行加密,以确保数据的保密性。

5. 增加SSL记录首部(Record Header):SSL协议的记录层负责将应用层数据转换为SSL记录,并为每个记录添加首部信息,包括版本号、SSL记录类型、序列号、以及是否包含压缩选项等信息。首部信息之后是对称密钥加密后的应用层数据。SSL记录首部提供了SSL记录的元信息,帮助后续的解密过程正确地组装和解密记录层的数据。

SSL协议脆弱性分析:

  1. 无法保护UDP应用
  2. 客户端假冒
  3. SSL协议不能对抗流量分析

2、SSL VPN

IPSEC在Client to LAN场景下比较吃力的表现:

  1. 在用户认证方面比较薄弱
  2. 因为需要进行参数协商,所以,IPSEC VPN需要客户端安装对应的应用程序;
  3. 因为需要进行感兴趣流的抓取,所以,策略需要进行调整,不太方便;
  4. 因为IPSEC VPN是基于网络层和传输层进行权限管理,但也仅能深入到服务层面,如果我们需要一款可以针对应用层面进行更细细颗粒管理的VPN技术,就不能选择IPSEC VPN

SSL VPN的优势:

  1. 因为SSL协议封装在传输层和应用层之间,仅针对应用层的数据进行保护,这样,在进行组网时,任何场景下都不会影响到网络传输;
  2. SSL VPN采用的是一种基于B/S架构的模式,所以,只要客户拥有浏览器就可以访问,方便快捷;
  3. 最主要的是,和IPSEC VPN针对网络层的控制相比,SSL VPN可以基于应用层做更细颗粒度的控制。

SSL VPN:虚拟网关技术,是一种基于SSL加密技术的虚拟私人网络。可以理解为是用户的一个接入的接口,用户可以通过在浏览去中输入虚拟网关的IP地址(或者域名)访问到虚拟网关,这个过程需要进行用户认证,划分用户的权限。用户认证通过后,虚拟网关会向远程用户提供可也访问的内网资源列表,远程用户通过点击或者触发便可访问到内网的资源。
一台防火墙可以创建多个虚拟网关,每个虚拟网关相互独立,互不影响,不同的虚拟网关可以
配置各自的用户和资源进行单独管理。

SSL VPN的总体流程:

1)认证

本地认证:本地认证就是用户名和密码信息在防火墙本地存储,登陆时在防火墙本地进行比对验证,由防火墙进行判断
服务器认证:用户名和密码信息存储在服务器上,防火墙需要将登录信息发送给服务器,由服务器进行判断,之后将结果返回给防火墙,做出对应的动作

证书匿名认证:需要客户端提交证书,防火墙通过验证客户端的证书来认证用户

要求:

  1. 客户端证书和防火墙上导入的客户端CA证书由同一个CA机构颁发
  2. 客户端证书必须在有效期内
  3. 客户端证书中用户过滤字段必须是防火墙上配置已有的用户。例如,用户过滤字段的结果CN=user00019

证书挑战认证:比证书匿名认证多增加了用户名密码校验,可以理解为双因子验证

2)资源发布

1、Web代理

2、文件共享

3、端口转发

 可以针对所有TCP协议的资源进行发布

使用ActiveX控件

4、网络扩展

需要在用户客户端上安装一张虚拟网卡,会下发一个私网的IP地址和路由

可靠传输模式:

快速传输模式:

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

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

相关文章

GORM:优雅的Go语言ORM库

文章目录 引言GORM原理基础使用安装GORM定义模型连接数据库CRUD操作 高级使用关联事务回调 优点结论 引言 在Go语言开发中,数据库操作是不可或缺的一部分。虽然直接使用SQL语句可以灵活地与数据库交互,但随着项目规模的扩大,SQL语句的编写、…

成为git砖家(4): git status 命令简介

1. untracked 和 tracked 状态 Remember that each file in your working directory can be in one of two states: tracked or untracked. Tracked files are files that were in the last snapshot, as well as any newly staged files; they can be unmodified, modified, o…

华为od-开发-终端云面试总结

华为OD - 终端云 资面 主要问一些在校经历,做过那些项目,大学期间觉得做过的最有价值的事情,大学期间令你感到最有成就感的事情,期望薪资。 技术一面(1h20min)7.18 1、项目里使用到RPC去取代HTTP&#x…

Nginx周末部署

背景 Nginx是本人学习的一类中间件,上次完成了vue的搭建,所以顺便把项目加入Nginx吧 1. 镜像拉取与测试 查询dockerHub,选择最新最稳定的版本 docker pull nginx:stable-perl 执行下载 docker run -d --name mynginx -p 8080:80 -v D:\IM…

基于bert的自动对对联系统

目录 概述 演示效果 核心逻辑 使用方式 1.裁剪数据集 根据自己的需要选择 2.用couplet数据集训练模型 模型存储在model文件夹中 3.将模型转换为ONNX格式 4.打开index.html就可以在前端使用此自动对对联系统了。 本文所涉及所有资源均在传知代码平台可获取。 概述 这个生成器利用…

【Python检查两个列表是不是有重复项有关案例】

以下是一些具体的例子,展示了如何使用不同的方法来检查两个列表是否有重复项: 例子1:使用集合 list1 [1, 2, 3, 4, 5] list2 [4, 5, 6, 7, 8]# 转换为集合并求交集 duplicates list(set(list1) & set(list2))if duplicates:print(&q…

面完英伟达算法岗,心态崩了。。。

最近这一两周看到不少互联网公司都已经开始秋招提前批了。不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球友解…

DS1302时钟芯片全解析——概况,性能,MCU连接,样例代码

DS1302概述: 数据: DS1302是一个可充电实时时钟芯片,包含时钟(24小时格式或12小时格式)、日历(年,月,日,星期)、31字节RAM(断电数据丢失&#x…

Fantastic-admin:Vue 中后台管理系统

Fantastic-admin:Vue 中后台管理系统 在当今的前端开发世界里,fantastic-admin 作为一款功能强大的 Vue 中后台管理系统框架,简直是开发者的福音。本文将介绍 fantastic-admin 的基本信息、特点,以及如何快速上手和使用。 项目简介…

String的创建和拼接面试常考题详解

非常关键的 intern() 当intern()方法被调用的时候,如果字符串常量池中已经存在这个字符串对象了,就返回常量池中该字符串对象的地址;如果字符串常量池中不存在,就在常量池中创建一个指向该对象堆中实例的引用,并返回这…

面试场景题系列--(4)设计一个支持敏感数据存储和传输安全的加解密平台--xunznux

文章目录 设计一个支持敏感数据存储和传输安全的加解密平台1. 设计背景2. 需求分析日常开发中的加解密程序常见问题解决方案具体来说系统主要用例过程和功能系统需求 3. 概要设计3.1 部署模型3.2 加解密调用流程 4. 详细设计4.1 密钥领域模型4.2 核心服务类设计4.3 加解密数据接…

在Spring中优雅地注入Java集合:实现依赖注入的艺术

在Spring中,可以通过多种方式注入一个Java集合(如List、Set、Map等)。Spring提供了强大的依赖注入功能,允许你以声明的方式将集合类型的依赖项注入到你的bean中。以下是一些常用的方法: 1. 使用XML配置 在Spring的XM…

WSL for Windows

1、安装 超详细Windows10/Windows11 子系统(WSL2)安装Ubuntu20.04(带桌面环境)_wsl安装ubuntu20.04-CSDN博客https://blog.csdn.net/weixin_44301630/article/details/122390018 注意,安装之后首次启动 Ubuntu 时&…

【过题记录】 7.25

Friends 所有的方案减去非法的方案就是合法的方案 对于一个人&#xff0c;找到他往后的最早出现的非法位置&#xff0c;后面所有的串都是非法 从后往前维护一个最小非法后缀即可。 #include<bits/stdc.h> using namespace std;#define int long longconst int N 1e610…

Linux——常见命令

Linux常用命令是Linux系统操作的基础&#xff0c;掌握这些命令能够极大地提高系统管理和文件操作的效率。以下是一些常用的Linux命令及其基本用法&#xff1a; 一、文件与目录操作 ls&#xff1a;列出目录内容 基本用法&#xff1a;ls [选项] [目录名]常用选项&#xff1a;-a…

【Web开发手礼】探索Web开发的魅力(十二)-Vue(2)用户动态页面

前言 主要介绍了用vue框架创建用户动态页面的具体过程&#xff0c;可以帮助学习vue框架的基本知识&#xff01;&#xff01;&#xff01;&#xff01; 用户动态页面 用户信息 用户头像 通过 Bootstrap 所提供的 .img-fluid 类让图片支持响应式布局。其原理是将 max-width: 10…

stm32 在qemu运行

stm32基础工程配置 生成stm32代码 通过cubemx 选择 stm32f407 调试功能关闭&#xff0c;设置外部时钟&#xff0c;设置串口1&#xff0c;选择makefile 工程&#xff0c;生产代码 屏蔽系统时钟配置 // SystemClock_Config 添加 发生代码 HAL_UART_Transmit(&huart1,&quo…

RocketMQ Broker组件

Apache RocketMQ 是一款分布式消息中间件&#xff0c;具有高性能、低延迟、高可靠等特点。RocketMQ 的核心组件之一是 Broker&#xff0c;它负责消息的存储、过滤、事务处理以及定时/延时消息的管理。在本文中&#xff0c;我们将详细探讨 RocketMQ Broker 的这些关键功能。 消…

在Spring Boot中使用自定义过滤器和MDC实现高级日志记录

在现代Web开发中&#xff0c;日志记录是必不可少的。通过记录日志&#xff0c;开发者可以追踪请求的流程、定位问题并进行性能调优。本文将介绍如何在Spring Boot项目中使用自定义过滤器结合MDC&#xff08;Mapped Diagnostic Context&#xff09;技术&#xff0c;实现高级日志…

三子棋小程序

一.自定义头文件(game.h) 放入源文件需要用到的标准库头文件和函数的声明 ROW 和COL为棋盘的行和列&#xff0c;三子棋嘛&#xff0c;肯定为3啦 #pragma once #include<stdio.h> #include<String.h> #include<stdlib.h> #include<time.h> #define ROW…