什么是 TLS/SSL 握手
TLS/SSL 握手是一个加密过程,每当客户端(如浏览器)与服务器建立连接时,都会在后台进行,此握手协议有助于客户端和服务器之间的安全连接,从而促进隐私、数据完整性和机密性。
TLS/SSL 握手何时发生
每当客户端尝试与服务器建立安全连接时,都会触发 TLS/SSL 握手过程。这包括以下情况:
- 用户尝试访问使用 HTTPS 的网站。
- 用户连接到支持 SMTP 的邮件服务器。
- 用户需要通过 TLS/SSL 建立安全的通信通道。
TLS 握手与 SSL 握手有区别吗
尽管术语SSL仍在广泛使用,但TLS是最新的协议,但是,术语 TLS 和 SSL 可以互换使用,同样,术语 TLS 握手和 SSL 握手可以互换使用。
注意:TLS 1.2 及更高版本目前被认为是安全的,并被广泛使用,以防范 POODLE 攻击和 Heartbleed 漏洞等网络威胁。
TLS 握手过程
在 TLS 握手期间,客户端和服务器之间将发生以下交换:
- 客户端和服务器通过确定支持的最高 TLS 版本以及握手过程中要使用的加密算法来建立其兼容性。
- 客户端和服务器验证彼此的完整性和真实性。
- 它们派生一个会话密钥,用于加密传输中的数据并保护整个会话。
TLS 握手中涉及的步骤
整个 TLS 握手过程涉及客户端和服务器之间来回通信的几个步骤,以下是对 TLS/SSL 握手中涉及的所有步骤的详细分析。
| 术语 | 描述 | 
|---|---|
| TLS 协议 | 客户端支持的 TLS 版本 | 
| 密码套件 | 客户端首选加密算法的列表。然后,服务器可以选择一个适合客户端和服务器的选项。 | 
| 客户端随机 | 一堆随机生成的字符,将有助于保护握手过程。 | 
| 服务器随机 | 服务器生成的一堆随机字节,类似于客户端随机数。 | 
| TLS 协议版本 | 服务器为此会话选择的 TLS 版本。 | 
- 客户问候
 客户端通过发送名为“客户端 Hello”的 hello 消息来启动与服务器的 TLS 握手。默认情况下,此消息将包含有关 TLS 协议、密码套件和客户端随机数的信息。
 还可以包含其他字段,例如会话 ID、压缩方法和支持的扩展,以促进会话恢复、传达客户端对压缩的支持以及增强协议功能。
- 服务器你好
 作为对客户端 Hello 的响应,服务器将发送一个 Server Hello,其中包括有关 TLS 协议版本、服务器选择的密码套件和 Server Random 的信息
 如果客户端与客户端随机数一起发送,则将包含其他字段,例如会话 ID 和压缩方法。
- 服务器身份验证
 除了 Server Hello,服务器还向客户端提供其数字证书。客户端将通过使用相应的证书颁发机构验证此证书来验证服务器的身份。
- 预主密钥生成
 然后,客户端使用安全的随机生成器生成预主密钥。此密钥用于在客户端和服务器之间建立共享密钥,然后使用该密钥派生会话密钥。此会话密钥将用于加密和解密客户端和服务器之间的通信。
 注意:预主密钥对于每个 TLS 会话都是唯一的且完全随机的。因此,即使服务器的私钥将来被泄露,在握手期间交换的加密预主密钥也将保持安全,从而保护过去的会话免受私钥泄露的影响。
- 密钥交换
 预主密钥使用服务器的公钥(从 TLS 证书获取)进行加密,并发送到服务器。这样做是为了确保只有服务器才能解密此密钥。然后,服务器将使用其私钥解密预主密钥。
- 会话密钥生成
 客户端和服务器都使用服务器随机数、客户端随机数和预主密钥生成会话密钥。
- 客户端完成和服务器完成
 客户端和服务器发送一条消息,指示握手过程现已完成。

TLS/SSL 握手的安全性
虽然握手过程本身是安全的,但 TLS 连接的安全性基于以下优势:
- 密码套件的优势
- 证书验证
- 服务器配置
- TLS/SSL握手协议的重要性
密码套件的优势
密码套件是一组加密算法,密码套件的强度在保护 TLS 连接方面起着重要作用。因此,使用最新的密码套件(如 TLS_AES_256_GCM_SHA384、TLS_CHACHA20_POLY1305_SHA256 和 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA38)非常重要,这些套件可以防止漏洞。
证书验证
证书验证过程可确保服务器的真实性和完整性。但是,如果由于配置错误或不遵守最佳实践而导致该过程不严格,则可能导致接受过期、吊销或无效的证书,从而危及 TLS 连接的整体安全性。
服务器配置
服务器的配置方式应包含 TLS 最佳实践,例如禁用过时和易受攻击的协议(SSL 等协议)、使用强密码套件以及强制执行加密算法。使用这些最佳实践来保护 TLS 握手过程将有助于建立安全的 TLS 连接。
TLS/SSL握手协议的重要性
TLS 握手协议负责在客户端和服务器之间建立安全的通信通道。它不仅通过强大的加密来保护敏感数据,而且还通过确保传输中数据的真实性和机密性来建立信任。因此,TLS握手协议在确保安全的在线通信方面起着至关重要的作用。
简化TLS/SSL证书管理
证书在 TLS/SSL 握手过程中起着至关重要的作用,请务必使所有证书保持最新状态,Key Manager Plus等证书生命周期管理解决方案可帮助企业发现、监控和管理其环境中的所有TLS/SSL证书,企业还可以轻松地实现证书管理的整个生命周期的自动化。
相关文章:
 
什么是 TLS/SSL 握手
TLS/SSL 握手是一个加密过程,每当客户端(如浏览器)与服务器建立连接时,都会在后台进行,此握手协议有助于客户端和服务器之间的安全连接,从而促进隐私、数据完整性和机密性。 TLS/SSL 握手何时发生 每当客…...
 
和鲸科技与国科环宇建立战略合作伙伴关系,以软硬件一体化解决方案促进科技创新
近日,在国科环宇土星云算力服务器产品发布会暨合作伙伴年度会上,和鲸科技与国科环宇正式完成战略伙伴签约仪式,宣布达成战略合作伙伴关系。未来,双方将深化合作,充分发挥在产品和市场方面的互补优势,为企事…...
 
[C++]六大默认成员函数详解
☃️个人主页:fighting小泽 🌸作者简介:目前正在学习C和Linux 🌼博客专栏:C入门 🏵️欢迎关注:评论👊🏻点赞👍🏻留言💪🏻 …...
 
组合(回溯算法)
77. 组合 - 力扣(LeetCode) 题目描述 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 样例输入 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],…...
 
力扣:1419. 数青蛙
题目: 代码: class Solution { public:int minNumberOfFrogs(string croakOfFrogs){string s "croak";int ns.size();//首先创建一个哈希表来标明每个元素出现的次数!vector<int>hash(n); //不用真的创建一个hash表用一个数…...
 
java_springboot企业人事考勤请假管理信息系统rsglxx+jsp
(1)熟练掌握Java开发的原理和方法 (2)熟练学习掌握SSM框架 (3)熟悉软件开发的流程 (4)了解中内外互联网中所主流的技术 (5)深层次的了解计算机学科领域的知识…...
 
java项目之木里风景文化管理平台(ssm+vue)
项目简介 木里风景文化管理平台实现了以下功能: 前台功能:用户进入系统可以实现首页,旅游公告,景区,景区商品,景区美食,旅游交通工具,红黑榜,个人中心,后台…...
 
源码安装mysql
使用源码安装mysql,这里选择的版本是mysql5.7.35 ,系统是Centos7.6 官网下载地址:https://downloads.mysql.com/archives/community/ 下载源码压缩包 [rootlocalhost ~]# cd /opt[rootlocalhost opt]# wget https://downloads.mysql.com/archives/get/…...
 
注解方式优雅的实现Redisson分布式锁
1.前言 随着微服务的快速推进,分布式架构也得到蓬勃的发展,那么如何保证多进程之间的并发则成为需要考虑的问题。因为服务是分布式部署模式,本地锁Reentrantlock和Synchnorized就无法使用了,当然很多同学脱口而出的基于Redis的se…...
 
服务器安装JDK17 版本显示JDK8
服务器之前安装的是JDK8,后面升级JDK17后,发现执行 java -vsrsion 显示的是此时我的环境变量已经换成了JAVA17的路径 输入: vim /etc/profile 解决办法: 1.更新自己环境变量 bash export JAVA_HOME/usr/local/jdk-17.0.7 …...
 
利用MCMC 获得泊松分布
写出概率流方程如下 if state 0: if np.random.random() < min([Lambda/2, 1]):state 1else:passelif state 1:if choose_prob_state[i] < 0.5:#选择 1 -> 0,此时的接受概率为min[2/Lambda, 1]if np.random.random() < min([2/Lambda, 1]…...
 
docker-compose脚本编写及常用命令
安装 linux DOCKER_CONFIG/usr/local/lib/docker/cli-plugins sudo mkdir -p $DOCKER_CONFIG/cli-plugins sudo curl -SL https://521github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose sudo c…...
编译企业微信会话内容存档PHP版SDK扩展
1.下载SDK 如果克隆不了,就页面下载 git clone https://github.com/pangdahua/php7-wxwork-finance-sdk2.下载企微官网C版本的最新sdk文件 下载地址:https://wwcdn.weixin.qq.com/node/wework/images/sdk_20201116.rar 下载以后将解压之后的文件夹里l…...
传统算法:使用 Pygame 实现K-Means 聚类算法
使用 Pygame 模块演示了 K-Means 聚类算法的基本原理。让我逐步解释它的实现: 初始化和基本设置 Pygame 初始化: 通过 pygame.init() 初始化 Pygame。 定义颜色和屏幕大小: 定义了一些颜色常量(WHITE, BLACK, RED, GREEN, BLUE)和屏幕的宽度和高度。 创建 Pygame 窗口:…...
 
WebUI工作流插件超越ComfyUI
在AI绘画领域,Stable Diffsion是最受欢迎的,因为它是开源软件。 开源有两大优势,一是免费,二是适合折腾。 大量的开发者、爱好者投入无尽的热情,来推动Stable Diffsion的快速发展。 在图形界面方面,WebU…...
Docker容器化平台及其优势和应用场景介绍
Docker是一种开源的容器化平台,它基于操作系统级别虚拟化技术,可以将应用程序及其依赖项打包成一个独立的容器,提供轻量级、一致性、可移植性的应用环境。Docker的基本概念和优势如下: 镜像(Image):Docker容器的基础&…...
 
Hive:从HDFS回收站恢复被删的表
场景 一张手工维护的内部表,本来排查没有使用,然后删掉了,发现又需要使用,只能恢复这张表了。 1.确认HDFS是否开启回收站功能 2.查看回收站中的数据 被删除的数据会放在删除数据时使用的用户目录下,如:使…...
 
TZOJ 1387 人见人爱A+B
答案: #include <stdio.h> void time(int ah, int am, int as, int bh, int bm, int bs, int* sum_h, int* sum_m, int* sum_s) //不需要返回值所以定义void函数,前面6个为输入,然后用指针存给后面三个 {*sum_s (as bs) % 60; …...
 
校园圈子系统丨交友丨地图找伴丨二手市场等功能丨源码交付支持二开丨APP小程序H5三端交付!
校园圈子系统是一款专为校园生活设计的智能应用,拥有丰富多样的功能模块,提供全方位的服务。无论您是师生还是校友,我们都为您打造了一个与校园紧密相连的交流平台。 通过校园圈子系统,您可以方便地浏览校内最新动态,包…...
 
java操作windows系统功能案例(一)
下面是一个Java操作Windows系统功能的简单案例: 获取系统信息: import java.util.Properties;public class SystemInfo {public static void main(String[] args) {Properties properties System.getProperties();properties.list(System.out);} }该程…...
 
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
 
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
 
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
 
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
 
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
 
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
