SSL工作原理

2023-11-15

转自:https://www.wosign.com/Basic/howsslwork.htm

SSL 是一个安全协议,它提供使用 TCP/IP 的通信应用程序间的隐私与完整性。因特网的 超文本传输协议(HTTP)使用 SSL 来实现安全的通信。

在客户端与服务器间传输的数据是通过使用对称算法(如 DES 或 RC4)进行加密的。公用密钥算法(通常为 RSA)是用来获得加密密钥交换和数字签名的,此算法使用服务器的SSL数字证书中的公用密钥。有了服务器的SSL数字证书,客户端也可以验证服务器的身份。SSL 协议的版本 1 和 2 只提供服务器认证。版本 3 添加了客户端认证,此认证同时需要客户端和服务器的数字证书。

SSL 握手

SSL 连接总是由客户端启动的。在SSL 会话开始时执行 SSL 握手。此握手产生会话的密码参数。关于如何处理 SSL 握手的简单概述,如下图所示。此示例假设已在 Web 浏览器 和 Web 服务器间建立了 SSL 连接。

SSL工作原理
图 SSL的客户端与服务器端的认证握手

(1) 客户端发送列出客户端密码能力的客户端“您好”消息(以客户端首选项顺序排序),如 SSL 的版本、客户端支持的密码对(加密套件)和客户端支持的数据压缩方法(哈希函数)。消息也包含 28 字节的随机数。

(2) 服务器以服务器“您好”消息响应,此消息包含密码方法(密码对)和由服务器选择的数据压缩方法,以及会话标识和另一个随机数。

注意:客户端和服务器至少必须支持一个公共密码对,否则握手失败。服务器一般选择最大的公共密码对。

(3) 服务器发送其SSL数字证书。(服务器使用带有 SSL 的 X.509 V3 数字证书。)

如果服务器使用 SSL V3,而服务器应用程序(如 Web 服务器)需要数字证书进行客户端认证,则客户端会发出“数字证书请求”消息。在 “数字证书请求”消息中,服务器发出支持的客户端数字证书类型的列表和可接受的CA的名称。

(4) 服务器发出服务器“您好完成”消息并等待客户端响应。

(5) 一接到服务器“您好完成”消息,客户端( Web 浏览器)将验证服务器的SSL数字证书的有效性并检查服务器的“你好”消息参数是否可以接受。

如果服务器请求客户端数字证书,客户端将发送其数字证书;或者,如果没有合适的数字证书是可用的,客户端将发送“没有数字证书”警告。此警告仅仅是警告而已,但如果客户端数字证书认证是强制性的话,服务器应用程序将会使会话失败。

(6) 客户端发送“客户端密钥交换”消息。此消息包含 pre-master secret(一个用在对称加密密钥生成中的 46 字节的随机数字),和 消息认证代码( MAC )密钥(用服务器的公用密钥加密的)。

如果客户端发送客户端数字证书给服务器,客户端将发出签有客户端的专用密钥的“数字证书验证”消息。通过验证此消息的签名,服务器可以显示验证客户端数字证书的所有权。

注意: 如果服务器没有属于数字证书的专用密钥,它将无法解密 pre-master 密码,也无法创建对称加密算法的正确密钥,且握手将失败。

(7) 客户端使用一系列加密运算将 pre-master secret 转化为 master secret,其中将派生出所有用于加密和消息认证的密钥。然后,客户端发出“更改密码规范” 消息将服务器转换为新协商的密码对。客户端发出的下一个消息(“未完成”的消息)为用此密码方法和密钥加密的第一条消息。

(8) 服务器以自己的“更改密码规范”和“已完成”消息响应。

(9) SSL 握手结束,且可以发送加密的应用程序数据。

相关标签:服务器SSL证书 客户端证书


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SSL工作原理 的相关文章

随机推荐

  • 迅雷2018校园招聘-数字组合问题

    题目 给定整数n 取若干个1到n的整数可求和等于整数m 编程求出所有组合的个数 比如当n 6 m 8时 有四种组合 2 6 3 5 1 2 5 1 3 4 限定n和m小于120 思路 首先 这道题想要通过暴力搜索是无法实现的 那么只能找规律
  • Qt解决Linux/ARM下QSound无法播放的问题

    Qt解决Linux ARM下QSound无法播放的问题 Qt在Linux ARM环境下使用QSound播放音频时 有时会遇到音频无法播放的问题 这有可能是音频文件与Qt不兼容的问题 QSound只能播放 wav格式的音频 无法播放诸如 mp
  • IMAGE REGISTRATION

    Classification Nature area based and feature based Different viewpoints multiview analysis image from different viewpoin
  • registry:NoSuchMethodError zookeeper.server.quorum.flexible.QuorumMaj

    文章目录 1 美图 2 背景 3 问题分析 4 解决方案 1 美图 2 背景 我设置一个已有的registry升级为zk下的ha 但是报错 java lang NoSuchMethodError org apache zookeeper s
  • template之模板注意事项

    前言 在分析STL之前 我们需要先对template做一个回忆 可能我总结的内容你都会了 也可能你没有了印象了 但是我还是希望你先浏览一下template的用法 毕竟STL全部都涉及到了模板 而template是学习STL的基础 templ
  • Stable Diffusion服务环境搭建(远程服务版)

    Stable Diffusion服务环境搭建 远程服务版 Stable Diffusion是什么 Stable diffusion是一个基于Latent Diffusion Models 潜在扩散模型 LDMs 的文图生成 text to
  • 微信小程序:图标的使用(icon)

    摘要 图标主要是用来辅助ui界面的 常用的是 和 像蓝牙和wifi是否连上的标志 让人直观明了 icon的参数 组件icon的参数主要有三个 下图所示 1 type icon的类型 官方给出了9个 分别为success success no
  • 51单片机AD转换代码原理图参考

    include reg52 h define uchar unsigned char define uint unsigned int sbit ADC RD P3 3 sbit ADC WR P3 4 sbit ADC INT P3 5
  • 设计模式——简单工厂模式

    静态工厂方法模式 通过专门定义一个类来负责创建其他类的实例 被创建的实例通常都具有共同的父类 模式中包含的角色及其职责 1 工厂 Creator 角色 简单工厂模式的核心 它负责实现创建所有实例的内部逻辑 工厂类可以被外界直接调用 创建所需
  • DRF学习之token验证(十)

    1 获取某分类下的商品 自定义过滤分类 增加过滤条件top category filter 用于过滤某个分类下的所有商品 class GoodsFilter django filters rest framework FilterSet 商
  • JVM垃圾回收机制(收集器、收集算法、卡表)

    目录 JVM垃圾回收机制 HotSpot垃圾分代回收算法 HotSpot经典垃圾收集器 CMS G1 跨代引用 卡表 写屏障 各种收集器对比 在java开发中 我们不需要过度的关注对象的回收和释放 因为JVM的垃圾回收机制可以帮助我们自动对
  • 全网最详细中英文ChatGPT-GPT-4示例文档-场景问题智能生成从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

    从0到1快速入门场景问题智能生成应用场景 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node js接口请求示例
  • C/C++学习——自定义数据类型——链表

    链表的概念 一 链表的概念 1 链表是一种存储空间能动态进行增长或缩小的数据结构 2 链表主要用于 1 建立不定长度的数组 2 可以在不重新安排整个存储结构的情况下 方便且迅速地插入和删除数据元素 3 链表广泛应用于数据管理中 二 结点 s
  • 延时任务的四种实现方式

    什么是延迟任务 顾明思议 我们把需要延迟执行的任务叫做延迟任务 延迟任务的使用场景有以下这些 红包 24 小时未被查收 需要延迟执退还业务 每个月账单日 需要给用户发送当月的对账单 订单下单之后 30 分钟后 用户如果没有付钱 系统需要自动
  • D0006-进制,位运算,原反补码

    十进制转其他进制 公式 除基取余 直到商为0 把余数反转拼接 十进制10转换二进制 商 余数 10 2 5 0 5 2 2 1 2 2 1 0 1 2 0 1 把余数反转拼接 1010 原码反码和补码 原码 一个二进制数据 最高位符号位 0
  • 数据存储---整形数据在内存中的存储

    我们每一次写代码的时候 都会创建变量 那么所创建的整形变量是如何在内存中存储的呢 目录 1 数据类型介绍 2 整形数据在内存中的存储形式 3 大小端字节序的介绍 1 数据类型介绍 本文重点介绍内置类型中的整形家族 1 内置类型 C语言本身具
  • JDK安装配置(Windows10)

    环境 windows10 官方链接 https www oracle com technetwork java javase downloads jdk8 downloads 2133151 html 点击Accept License Ag
  • 由于找不到msvcp120.dll无法继续执行代码怎么办?

    msvcp120 dll是微软软件包的一部分 它是一个库文件 可用于支持软件运行时 msvcp120 dll的作用是提供计算机程序所需的标准库 msvcp120 dll还负责管理堆内存 线程和异常处理函数等 在使用windows编写的应用程
  • indows npm ERR! gyp ERR! find Python Python is not set from command line or npm configuration npm ER

    问题描述 windows npm ERR gyp ERR find Python Python is not set from command line or npm configuration npm ERR gyp ERR find P
  • SSL工作原理

    转自 https www wosign com Basic howsslwork htm SSL 是一个安全协议 它提供使用 TCP IP 的通信应用程序间的隐私与完整性 因特网的 超文本传输协议 HTTP 使用 SSL 来实现安全的通信