网络学习(四)HTTPS中,SSL的单向认证与双向认证

目录

    • 一、什么是SSL?
      • 1.1 SSL 的主要功能
      • 1.2 SSL 的工作原理
      • 1.3 SSL 的核心组件
      • 1.4 SSL 的应用场景
      • 1.5 SSL 与 TLS 的区别
    • 二、SSL 单向认证、双向认证
      • 2.1 SSL 单向认证
      • 2.2 SSL 双向认证
      • 2.3 总结:SSL 单向认证和双向认证的区别

一、什么是SSL?

SSL(Secure Sockets Layer,安全套阶层) 是一种 用于在互联网上建立加密链接 的协议,旨在确保客户端(如浏览器)与服务器之间的通信安全。SSL 通过加密数据传输,防止敏感信息(如登录凭证、信用卡号等)被窃取或篡改。SSL的后续版本称为 TLS(Transport Layer Security,传输层安全),但人们通常仍习惯称之为 SSL。

在 OSI/RM 七层网络模型中,SSL/TLS 协议位于 传输层

当然,传输层除了 SSL/TLS 协议之外,还有很多常用的其他协议,如下所示:

完整的《常用网络协议神图》可以参考小编之前的文章:

  • 网络学习(一)OSI/RM七层网络模型和网络协议

1.1 SSL 的主要功能

  1. 加密通信

    SSL 通过加密算法(如AES、RSA等)对传输的数据进行加密,确保数据在传输过程中即使被截获也无法被解读。

  2. 身份验证

    SSL 的身份认证可以防止中间人攻击,有以下两种形式:

    • 单向认证: 通过数字证书,只验证服务器的身份。
    • 双向认证: 通过数字证书,同时验证客户端和服务器身份。

    (这两种身份验证形式会在后面进行详细描述。)

  3. 数据完整性

    SSL 通过消息摘要算法(如:SHA-256)确保数据在传输过程中未被篡改。

1.2 SSL 的工作原理

SSL/TLS 协议通过以下步骤建立安全连接:

  1. 客户端发起请求

    客户端(如浏览器)向服务器发起连接请求,并告知支持的 SSL/TLS 版本和加密算法。

  2. 服务器响应并发送证书

    服务器返回选择的 SSL/TLS 版本和加密算法,同时发送自己的数字证书(包含公钥)。

  3. 客户端验证证书

    客户端验证服务器证书的有效性(如是否由受信任的 CA 签发、是否过期等)。

  4. 密钥交换

    客户端生成一个对称密钥(会话密钥),用服务器的公钥加密后发送给服务器。

  5. 建立加密通信

    服务器用私钥解密获取对称密钥,双方使用该密钥加密后续通信。

1.3 SSL 的核心组件

  1. 数字证书

    由受信任的证书颁发机构(CA)签发,包含公钥、持有者信息和 CA 的数字签名。

  2. 加密算法

    • 对称加密(如AES):用于加密实际数据传输。
    • 非对称加密(如RSA):用于密钥交换和身份验证。
  3. 协议版本

    • SSL 1.0SSL 2.0SSL 3.0 -- 已淘汰
    • TLS 1.0TLS 1.1TLS 1.2TLS 1.3 -- 目前广泛使用

1.4 SSL 的应用场景

  1. 网站安全(HTTPS)

    SSL/TLS 是 HTTPS 协议的基础,用于保护网站与用户之间的通信。

  2. 电子邮件安全

    用于加密电子邮件传输(如SMTP、IMAP、POP3协议)。

  3. 虚拟专用网络(VPN)

    SSL VPN 用于远程用户安全访问企业内部资源。

  4. API 通信

    保护客户端与服务器之间的 API 调用。

1.5 SSL 与 TLS 的区别

  • SSLTLS 的前身,TLSSSL 的升级版本。
  • SSL 3.0 是 SSL 的最后一个版本,TLS 1.0 基于 SSL 3.0 改进而来。
  • TLS 在安全性、性能和扩展性上优于 SSL,目前广泛使用的是 TLS 1.2TLS 1.3

二、SSL 单向认证、双向认证

2.1 SSL 单向认证

SSL 单向认证只需要验证 服务端 的身份,无需验证客户端的身份。

SSL 单向认证的流程如下图所示:

文字过程描述如下:

  1. 客户端的浏览器向服务器传送 客户端 SSL协议的版本号加密算法的种类、产生的 随机数,以及其他服务器和客户端之间通讯所需要的各种信息。

  2. 服务器向客户端传送 SSL协议的版本号加密算法的种类随机数 以及其他相关信息,同时服务器还将向客户端传送自己的 证书

  3. 客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:

    • 证书是否 过期
    • 发行服务器证书的CA是否 可靠
    • 发行者证书的公钥能否正确解开服务器证书的 “发行者的数字签名”
    • 服务器证书上的 域名 是否和服务器的实际域名相匹配。
    • 如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。
  4. 用户端随机产生一个用于后面通讯的"对称密码",然后用服务器的 公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的 “预主密码” 传给服务器。

    也就是说利用 非对称加密算法A传输对称加密的密钥B,后续都用密钥B传输,提高效率。

  5. 如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的 证书 以及加密过的 “预主密码” 一起传给服务器。

  6. 如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:

    • 客户的证书使用日期是否 有效
    • 为客户提供证书的CA是否 可靠
    • 发行CA的公钥能否正确解开客户证书的发行CA的 数字签名
    • 检查客户的证书是否在 证书废止列表(CRL) 中。
    • 检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的 私钥 解开加密的 “预主密码”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。
  7. 服务器和客户端用相同的主密码,即 “通话密码”,一个 对称密钥 用于SSL协议的安全数据通讯的加解密通讯。同时在SSL通讯过程中还要完成数据通讯的 完整性,防止数据通讯中的任何变化。

  8. 客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑦中的 主密码 为对称密钥,同时通知服务器客户端的握手过程结束。

  9. 服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的 主密码 为对称密钥,同时通知客户端服务器端的握手过程结束。

  10. SSL的握手部分结束,SSL安全通道的数据通讯开始,客户和服务器开始使用相同的 对称密钥 进行数据通讯,同时进行通讯完整性的检验。

注意:SSL单向认证只要求站点部署了ssl证书就行,任何用户都可以去访问(IP被限制除外等),只是服务端提供了身份认证。

2.2 SSL 双向认证

SSL 双向认证需要验证 客户端服务端 的身份。

SSL 双向认证的流程如下图所示:

文字过程描述如下:

  1. 浏览器发送一个连接请求给安全服务器
  2. 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器。
  3. 客户浏览器检查服务器送过来的证书 是否是由自己信赖的 CA中心(如沃通CA)所签发的。如果是,就继续执行协议;如果不是,客户浏览器就给客户一个警告消息:警告客户这个证书不是可以信赖的,询问客户是否需要继续。
  4. 接着 客户浏览器比较证书里的消息,例如 域名公钥,与服务器刚刚发送的相关消息是否一致,如果是一致的,客户浏览器认可这个服务器的合法身份。
  5. 服务器要求客户发送客户自己的证书。收到后,服务器验证客户的证书,如果没有通过验证,拒绝连接;如果通过验证,服务器获得用户的 公钥
  6. 客户浏览器告诉服务器自己所能够支持的通讯对称密码方案
  7. 服务器从客户发送过来的密码方案中,选择一种 加密程度最高的密码方案,用客户的 公钥 加过密后通知浏览器。
  8. 浏览器针对这个密码方案,选择一个 通话密钥,接着用服务器的 公钥 加过密后发送给服务器。
  9. 服务器接收到浏览器送过来的消息,用自己的 私钥 解密,获得 通话密钥
  10. 服务器、浏览器接下来的通讯都是用对称密码方案对称密钥 是加过密的。

2.3 总结:SSL 单向认证和双向认证的区别

  1. 证书要求
    • SSL 单向认证: 仅服务端需要持有证书,客户端无需证书。
    • SSL 双向认证:服务端和客户端均需持有证书。
  2. 认证过程
    • SSL 单向认证:客户端验证服务端证书的有效性,服务端无需验证客户端身份。服务端向客户端发送的密码方案是未加密的,但这并不影响整体通信的安全性。
    • SSL 双向认证:客户端和服务端互相验证对方证书的有效性,确保双方身份可信。
  3. 适用场景
    • SSL 单向认证:适用于大多数 Web 应用(如电商、社交平台等),用户数量庞大,通常无需在通信层对客户端进行身份验证。
    • SSL 双向认证:适用于对安全性要求较高的场景(如金融行业应用对接),需要对客户端进行严格的身份验证,以确保通信双方的可信性。
  4. 性能与复杂性
    • SSL 单向认证:实现简单,性能开销较低,适合高并发场景
    • SSL 双向认证:实现复杂,性能开销较高,适合对安全性要求极高的场景

整理完毕,完结撒花~ 🌻





参考地址:

1.SSL 单向认证和双向认证说明,https://cloud.tencent.com/document/product/214/54254

2.【ssl认证、证书】SSL双向认证和SSL单向认证的区别(示意图),https://blog.csdn.net/m0_45406092/article/details/114638087

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

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

相关文章

Mybatis 中#{} 和${} 的区别是什么?

在 MyBatis 中,#{} 和 ${} 都是用于动态 SQL 语句中的占位符,但是它们的作用和使用方式是不同的。下面是它们的区别: 1. #{} —— 用于防止 SQL 注入和自动类型处理 #{} 是用来将参数安全地传递到 SQL 语句中,它会将传递的参数值…

HTML-05NPM使用踩坑

2025-03-04-NPM使用踩坑 本文讲述了一个苦逼程序员在使用NPM的时候突然来了一记nmp login天雷,然后一番折腾之后,终究还是没有解决npm的问题😞😞😞,最终使用cnpm完美解决的故事。 文章目录 2025-03-04-NPM使用踩坑[toc…

Zookeeper 的核心引擎:深入解析 ZAB 协议

#作者:张桐瑞 文章目录 前言ZAB 协议算法崩溃恢复选票结构选票筛选消息广播 前言 ZooKeeper 最核心的作用就是保证分布式系统的数据一致性,而无论是处理来自客户端的会话请求时,还是集群 Leader 节点发生重新选举时,都会产生数据…

C++ Primer 动态数组

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

基于 HTML、CSS 和 JavaScript 的智能九宫格图片分割系统

目录 1 前言 2 技术实现 2.1 HTML 结构 2.2 CSS 样式 2.3 JavaScript 交互 3 代码解析 3.1 HTML 部分 3.2 CSS 部分 3.3 JavaScript 部分 4 完整代码 5 运行结果 6 总结 6.1 系统特点 6.2 使用方法 1 前言 在当今数字化的时代,图片处理需求日益增长。…

Java+iTextPDF,实时生成与预览PDF文件的最佳实践!

Java+iTextPDF,实时生成与预览PDF文件的最佳实践! 背景 其实公司之前的项目里是用到了帆软报表的,然而最近接了一个新项目,这个项目独立部署在甲方的独立环境中,组长的意思是不用再单独部署一套帆软报表,成本太大,用其他方式实现一下。虽然我不太理解成本大在哪儿,不…

Linux 快捷命令链接

修改mvn命令 默认手动安装后,命令格式为 安装路径命令 /data/apache-maven-3.8.8/bin/mvn -v更改为通用的命令模式 [root ~]# cat /etc/centos-release CentOS Linux release 7.9.2009 (Core) [root ~]# echo $PATH /usr/local/node16/bin:/usr/local/sbin:/sbin…

论文回顾:NeoBERT:新一代 BERT

NeoBERT:新一代编码器,具有 4K 标记上下文长度,在 MTEB 上优于 RoBERTa 等更大的模型! 论文链接:https://arxiv.org/pdf/2502.19587 摘要 NeoBERT 是下一代双向编码器;它融合了最先进的架构、现代数据和优…

机器视觉开发教程——封装Halcon通用模板匹配工具【含免费教程源码】

目录 引言前期准备Step1 设计可序列化的输入输出集合【不支持多线程】Step2 设计程序框架1、抽象层【IProcess】2、父类【HAlgorithm】3、子类【HFindModelTool】 Step3 设计UI结果展示 引言 通过仿照VisionPro软件二次开发Halcon的模板匹配工具,便于在客户端软件中…

一、OpenGL的原理解析

文章目录 OpenGL到底实现的是什么?OpenGL内模型数据的本质是什么?为什么三角形是 3D 渲染的最基本单元?MVP 变换(Model-View-Projection 变换)OpenGL渲染流程-摄像机变换OpenGL渲染流程-投影变换OpenGL渲染管线概述 Op…

大模型——CogView4:生成中英双语高清图片的开源文生图模型综合介绍

CogView4:生成中英双语高清图片的开源文生图模型综合介绍 CogView4 是由清华大学 KEG 实验室(THUDM)开发的一款开源文生图模型,专注于将文本描述转化为高质量图像。它支持中英双语提示词输入,尤其擅长理解中文提示并生成带有汉字的图像,非常适合广告设计、短视频创作等场…

网络安全法与等级保护 PPT 精华汇总

资源描述 本资源文件为《网络安全法与等级保护》的PPT精华汇总,内容涵盖了网络安全法与等级保护的总体框架及相关标准规范。该PPT详细介绍了网络安全法与等级保护的各个章节和条款,并提供了基础类和应用类的相关标准文件,帮助读者全面了解和…

前端知识一

(ref函数)1.为什么vue3中使用ref来创建响应式数据,而不是直接声明一个变量 import { ref } from "vue";const count ref(0); // 创建一个响应式的计数器,初始值为0function increment() {count.value; // 增加计数器的…

国产免费AI的IDE-TRAE

还是在AI的加持下的新的工具 在上周一次偶然的机会看到了这样的标题–用上Claude的AI编程工具Trae。 AI我还没入门,编程也是小白级别。Claude是什么不知道。Trae这是什么也不知道。为什么起这个名字?都不知道含义。 先下载吧。(这里要说一…

解决中文乱码:字符编码全攻略 - ASCII、Unicode、UTF-8、GB2312详解

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

【Linux】进程信号——信号保存和信号捕捉

文章目录 信号保存信号相关的概念信号是如何保存的呢?有关信号保存的系统调用sigprocmask信号的增删查改查看pending表验证接口 信号捕捉用户态与内核态信号捕捉流程 总结 信号保存 信号相关的概念 信号递达:指 操作系统 将一个信号(Signal…

计算机网络数据传输探秘:包裹如何在数字世界旅行?

计算机网络数据传输探秘:包裹如何在数字世界旅行? 一、从快递网络看数据传输本质 想象你网购了一件商品: 打包:商家用纸箱包装,贴上地址标签(数据封装)运输:包裹经过网点→分拣中心→运输车(网络节点与链路)签收:快递员核对信息后交付(数据校验与接收)数据的网络…

CyberRT(apollo) 定时器模块简述及bug分析

timer 模块 timer的定义,cyberrt中timer模块用于设置定时器任务,字面意思,设置设置定时周期及出发频次(周期 or oneshot),到达指定时间时间触发callback time wheel 时钟节拍轮,常见的定时器设计&#x…

使用ast获取py文件中所有函数与类名

当我们在创建python项目,经常需要遍历和分析代码文件,特别是当我们想要自动化地获取某些信息,比如所有的函数和类名。Python的ast(Abstract Syntax Trees,抽象语法树)模块为我们提供了一个强大的工具,可以方…

【C语言5】函数:库函数、自定义函数、形参和实参、return语句、数组做函数参数、嵌套调用和链式访问、声明和定义

文章目录 一、函数的概念二、库函数2.1 标准库和头文件2.2 库函数的使用方法 三、自定义函数3.1 函数的语法形式 四、形参和实参4.1 实参4.2 形参4.2 实参和形参的关系 五、return 语句六、数组做函数参数七、嵌套调用和链式访问7.1 嵌套调用7.2 链式访问 八、函数的声明和定义…