说下SSL/TLS四次握手过程?

news2024/11/24 14:05:55

参考自:
SSL/TLS四次握手过程是怎么样的?
HTTPS、SSL、TLS三者之间的联系和区别

一.SSL/TLS 简介

SSL(Secure Socket Layer 安全套接层)是基于 HTTPS 下的一个协议加密层,用于解决 HTTP 在传输数据时使用明文而导致的不安全问题。

  • SSL 是 HTTP 之下,TCP 之上的一个协议层,是基于 HTTP 标准并对 TCP 传输数据时进行加密,所以 HTTPS 可以想成是 HTTP+SSL 的简称。
  • HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信。
  • TLS 可以简单理解为 SSL 的升级版。在SSL更新到3.0时,IETF 对 SSL3.0 进行了标准化,标准化后的更名为TLS1.0(Transport Layer Security 安全传输层协议),可以说 TLS 就是SSL的新版本3.1,并同时发布“RFC2246-TLS加密协议详解”,

     

    SSL/TLS

                                                                  SSL/TLS

二、SSL/TLS四次握手过程
1. 客户端发出连接请求

客户端先向服务器发出加密通信的 ClientHello 请求。其向服务器提供下面信息:

  • 支持的协议版本,比如 TLS1.0 版本;
  • 支持的加密方法,比如 RSA 公钥加密;
  • 一个客户端生成的随机数(client random), 稍后用于生成对话密钥(session key)。随机数(client random) 客户端会保存,同时需要传送给服务端,随机数(client random) 需要跟服务端产生的随机数结合起来产生后面要讲到的 Master Secret。
2. 服务器回应

服务器收到客户端请求后,向客户端发出回应,这叫做 Serverhello。此步服务器主要做三件事:

  • 确认使用的加密通信协议版本,比如TLS1.00版本。如果游览器与服务器支持的版本不一致,服务器关闭加密通信;
  • 确认使用的加密方法(客户端所支持),比如RSA公钥加密;
  • 将服务器证书、非对称加密的公钥,以及一个随机数(Server random)发送给客户端
3. 客户端回应
(1) 客户端收到服务器回应以后,首先验证服务器证书

验证手段就是执行如下三种检查:

  • 检查证书是否已过期;
  • 检查证书中的域名与实际域名是否一致;
  • 检查证书是否是可信机构颁布的;

如果,上述过程中有任何一个环节发现问题,那么浏览器就会向访问者显示一个警告,由其选择是否还要继续通信。

(2) 验证完证书后处理

如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串新的随机数(Premaster secret ),并用证书中提供的公钥加密,发送给服务器。

此时,浏览器会根据前三次握手中的三个随机数:

  • Client random
  • Server random
  • Premaster secret

通过一定的算法来生成 “会话密钥” (Session Key),这个会话密钥就是接下来双方进行对称加密解密使用的密钥!

4. 服务端回应

服务端收到客户端的回复,利用已知的加密解密方式进行解密,服务器收到客户端的第三个随机数( Premaster secret) 之后,使用同样的算法计算出 “会话密钥” (Session Key)。

5. 握手完成后加密通信

整个握手阶段全部结束后,客户端与服务器进入加密通信,就完全是使用普通的 HTTP 协议,只不过用 “会话密钥” 加密内容。(非对称加密解密将不再使用,接下来完全由对称加密接手了,因为密钥已经安全的传送给了通信的双方)

三. 总结

SSL/TLS四次握手

                                              SSL/TLS四次握手

  1. 客户端请求建立 SSL 链接,并向服务端发送一个随机数–Client random 和客户端支持的加密方法,比如RSA公钥加密,此时是明文传输。
  2. 服务端回复一种客户端支持的加密方法、一个随机数–Server random、授信的服务器证书和非对称加密的公钥。
  3. 客户端收到服务端的回复后利用服务端的公钥,加上新的随机数–Premaster secret 通过服务端下发的公钥及加密方法进行加密,发送给服务器。
  4. 服务端收到客户端的回复,利用已知的加解密方式进行解密,同时利用Client random、Server random和Premaster secret通过一定的算法生成HTTP链接数据传输的对称加密key – session key。

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

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

相关文章

2024腾讯全球数字生态大会 | 线上直播活动参与教程

2024腾讯全球数字生态大会 | 线上直播活动参与教程 9月5-6日,2024腾讯全球数字生态大会,共见最新 全景式产品服务矩阵,了解智能科技如何成本优化、 生产提效、重塑商业生态、加速全球布局。 大会亮点 100大咖趋势洞察 100专业白皮书 100开发者活动福利 体验丰富前沿智能应用落…

【OpenCV】(五)—— 图像融合

在OpenCV中,图像融合是指将两张或多张图像合并成一张图像的技术。这种技术在很多场景下都非常有用,比如全景图的拼接、多曝光图像的融合、多焦点图像的融合等。下面是一些常用的图像融合方法和技术: 加权平均法: 这是最简单的图像…

炒短线,伦敦银的价格怎么计算?

伦敦银也就是国际市场上的现货白银交易,这个市场是全球最大的白银交易市场,一直以公平、公正、公开的交易环境,以及高效的清算机制而著称,因此也吸引了全球众多的投资者的关注。根据国际市场中的惯例,伦敦银的合约规格…

JAVA基础 day13 多线程

一、多线程 1.1多线程的创建方法? 1.1.1方式一:继承Thread类 //创建线程的方式之一:继承Thread类 public class demo1 {//main方法本身是由一条主线程推进,这里创建了myThread后,已经是多线程了public static void mai…

瑞_RabbitMQ_Java客户端SpringAMQP

文章目录 1 初识MQ2 RabbitMQ2.1 安装2.1.1 资源准备2.1.2 安装步骤 3 Java客户端SpringAMQP3.1 导入Demo工程(含资源)3.2 快速入门3.2.0 准备工作3.2.1 消息发送 publisher3.2.2 消息接收 consumer3.2.3 测试 3.3 WorkQueues模型3.3.0 准备3.3.1 消息发…

Vue3获取ref元素的几种方式

静态绑定 获取单个 dom 元素 v-for 中使用 需要注意的是,访问的时候,要确保 ref 引用值已经成功绑定上元素,我们可以使用以下几种方式确保获取

【jeston】torch相关环境安装

参考:玩转NVIDIA Jetson (25)— jetson 安装pytorch和torchvision 我的jeston信息: torch install 安装环境 conda create -n your_env python3.8 conda activate your_envpytorch_for_jeston 安装.whl文件 验证&#xff1…

Opencv:EignFace算法实现人脸识别

目录 简介 代码实现 结果展示 简介 EigenFace算法是人脸识别领域中的一种经典算法,它基于主成分分析(PCA)的原理,通过对人脸图像进行特征提取和降维,从而实现对人脸的有效识别。 EigenFace算法的核心思想是将人脸图…

从零实现高并发内存池

目录 1. 项目介绍1.1 这个项目具体功能是什么?1.2 本项目的知识储备 2. 什么是内存池2.1 池化技术2.2 内存池主要解决的问题2.3 malloc 3. 定长内存池设计4. 高并发内存池整体框架设计4.1 Thread Cache的设计思路4.2 Central Cache的设计思路4.3 Page Cache的设计思…

MySQL数据的导入

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…

(36)高分辨率频谱——通过在时域序列后面补零提高频域分辨率

文章目录 前言一、仿真分析较少的采集数据1.MATLAB代码2.仿真结果 二、高分辨率频谱1.有限信号样本高分辨率频谱的计算方法2.仿真结果 前言 在实际工程应用中,我们很多时候所能采集的信号并不正好是整周期的。此时若对信号做傅里叶变化,得到的结果中包含…

跨境电商不同节点的物流配送实现

由于涉及到国际运输、清关、仓储和本地配送等复杂环节,跨境物流与国内物流有着显著区别。本文将详细介绍跨境电商的不同物流配送模式,以及从头程到尾程各个节点的实现过程,并讨论相应的电商ERP系统在各个环节中的设计要点。 一、跨境电商的物流配送模式 跨境电商的物流配送…

【C】分支与循环2--while/for/do-while/goto以及break和continue在不同循环中的辨析~

分支与循环 while循环 if与while的对比 if(表达式)语句&#xff1b;while(表达式)语句&#xff1b;下面来看一个例子&#xff1a; 用 if 写&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() {if (1)printf("hehe");//if后面条…

数据结构——排序(2)

数据结构——排序(2) 文章目录 数据结构——排序(2)前言&#xff1a;1.快速排序&#xff08;非递归版本&#xff09;基本步骤&#xff1a;代码实现 2.归并排序算法思想&#xff1a;核心步骤&#xff1a;代码实现&#xff1a;特征总结&#xff1a; 3.计数排序&#xff08;非比较…

跨境电商独立站的本地化

随着全球电商的快速发展,越来越多的跨境电商选择建立独立站以摆脱平台限制,打造品牌影响力。独立站的成功不仅依赖于技术能力和供应链管理,更取决于对目标市场的本地化策略。 本文将从网站建设、商品信息展示、SEO推广等方面分析跨境电商独立站如何进行本地化适配,并讨论如…

SMARTFORM 条形码和二维码

本文主要是记录了二维码和条形码的创建以及在SMARTFORMS的使用 文章目录 SMARTFORM 条形码创建新的BARCODE创建条形码样式创建段落样式SMARTFORM调用条形码 SMARTFORM 二维码创建二维码Module Size 调节二维码的尺寸Module Size: 像素值ErrCorrLev : 容错率二维码的使用 SMARTF…

Springboot3+druid+jasypt+application.yml配置文件数据库密码加密技术

说明 开发环境我们经常把数据库密码直接明文暴露在配置文件中,但是在生产环境,出于安全考虑,必须对数据库密码进行加密。 Jasypt是一个简单易用的Java加密工具库。Jasypt支持多种加密算法,如AES、SHA512、AES_256等,以适应不同的安全需求,可以轻松将加密技术应用于配置…

虚拟机错误:‘VirtualBox Host-Only Ethernet Adapter #2‘

这个错误确实让我很难受。同时我也找了很多的方法&#xff0c;最终得到了这种方法是比较有效的。 参考 https://www.virtualbox.org/ticket/16807

2023年“网络建设与运维”广西省赛试题复盘

2023年“网络搭建与应用”省赛试题复盘 第一部分&#xff1a;网络搭建及安全部署项目 &#xff08;500分&#xff09; 一、竞赛内容分布 “网络搭建与应用”竞赛共分二个部分&#xff0c;其中&#xff1a; 第一部分&#xff1a;网络搭建及安全部署项目 第二部分&#xff1a;服…

Uncaught (in promise) TypeError: Cannot convert object to primitive value

使用vue3的时候报了这个错误&#xff0c;而且还同时报了一个警告 说一下我这里这个错误和警告的原因&#xff0c;是因为我把传给 第三方组件的值 也当做了 第三方组件的 ref&#xff0c;可能没太说清楚&#xff0c;所以接下来看代码&#xff0c;我这里使用的第三方组件是 vxe-t…