SSL握手协议详细流程_握手协议怎么发送-程序员宅基地

技术标签: Linux资讯  

导读 SSL(Secure Socket Layer)安全套接字协议是运行在应用层和TCP层之间的安全机制。保证上层应用数据传输的保密性、完整性以及传输双发身份的合法性。

SSL握手协议详细流程SSL握手协议详细流程

概述

SSL(Secure Socket Layer)安全套接字协议是运行在应用层和TCP层之间的安全机制。保证上层应用数据传输的保密性、完整性以及传输双发身份的合法性。
1.传输加密性:握手协议定义会话密钥后,所有传输的报文被会话密钥加密。
2.消息的完整性:传输的报文中增加MAC(消息认证码),用于检测完整性。
3.身份验证:客户端认证(可选),服务端认证(强制)

SSL协议包括:握手协议(Handshake protocol)、SSLpassword变化协议(SSL change cipher spec protocol)、警报协议(Alert protocol)、记录协议(Record protocol)。

握手协议是SSL连接通信的第一个子协议也是最复杂的协议。
SSL握手协议详细流程SSL握手协议详细流程

SSL握手协议

通过握手过程,客户端与服务端之间协商会话参数(包括相互验证、协商加密和MAC算法、生成会话密钥等)。
SSL握手协议详细流程SSL握手协议详细流程

第一阶段:建立安全能力

客户端-client_hello:
1.客户端可以支持的SSL最高版本号;
2.客户端生成的32字节的随机数;
3.会话标识符ID;
4.客户端可以支持的密码套件列表;
5.客户端可以支持的压缩方法列表。

服务端-server_hello:
1.SSL版本号,取收到的客户端SSL版本和服务端支持的最高版本中的较低者;
2.服务端生成的32字节的随机数;
3.会话标识符ID;
4.从收到的客户端密码套件列表中选择一个密码套件(包含密钥交换算法、对称加密算法、摘要算法);
5.从收到的客户端压缩方法列表中选择一种压缩方法。

第二阶段:服务端验证和密钥交换

服务端-certificate:
含有公钥信息的服务端数字证书或到CA的完整证书链。

服务端-server_key_exchange:
可选,根据密钥协商算法而定,如果传送给客户端的服务端证书数据不足以按照第一阶段选定的密钥交换算法协商密钥,该步骤不足密钥协商元素。

服务端-certificate_request:
可选,请求验证客户端证书信息,单向数据认证(只认证服务端)无此步骤。

服务端-server_hello_done:
通知客户端版本号和加密套件协商结束。

第三阶段:客户端验证和密钥交换

客户端-certificate:
可选,客户端数字证书,双向数据认证中服务端要求验证客户端身份合法性。

客户端-client_key_exchange:
客户端交换密钥,视密钥交换算法而定,密钥协商参数或pre-master key(服务端公钥加密)。

客户端-certificate_verify:
可选,客户端将已交互的握手消息、会话密钥的摘要值用客户端私钥加密发送给服务端。

第四阶段:完成

客户端-change_cipher_spec:
改变密码格式信息,告诉服务端之后的报文消息用会话密钥加密。

客户端-finished:
向服务端宣布握手协议完成。

服务端-change_cipher_spec:
改变密码格式信息,告诉客户端之后的报文消息用会话密钥加密。

服务端-finished:
向客户端宣布握手协议完成。

原文来自:https://www.linuxprobe.com/ssl-tcp.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Listen2You/article/details/100765165

智能推荐

本科论文查重_论文中代码算字数吗-程序员宅基地

降低重复率的方法(1) 网上的资源都是相互有着关联的,要是直接把原话拿来用是很容易就被检查出来的。可以在写的时候变化一下,换个关键词,用意思相同的词来替换原文中的词语。也可以变一下句子的结构,用自己的话重新改写一下,这样一来,意思虽然是一样的,但是论文查重就不会检查出飘红来,再不行的话,可以直接把飘红的那句删掉。要是非得要用的话,可以借助一些翻译软件,就是说你可以把那段话先翻译成英语,然后自己..._论文中代码算字数吗

LeetCode 231. 2的幂 Python-程序员宅基地

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: falseclass Solution: def isPowerOfTwo(self, n): z = bin(n)[2:] if(z[0]!='...

进阶-web001-babyweb-程序员宅基地

title: baby_webdata: 2020-09-25 21:18:20author: hqqqqqcopyright: ture题目描述想想初始页面是哪个解题思路根据提示很容易想到index.php输入index.php但是还是跳转到了1.php,并且跳index.php的时候报302状态码,所以是重定向了,第一个想的就是改包,虽然也不知道怎么改合适,但是我看见了这里:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9vrlwfaj-160162.

关于51/STC单片机中断优先级的调整_51单片机把串口中断设置为最高优先级-程序员宅基地

目录内容简述理论中断源类型IP寄存器LED程序:Proteus仿真图外部中断改变中断优先级内容简述:以一个简单的LED灯程序掌握51/STC单片机的中断优先级调整即:在主程序中设定LED为熄灭状态,利用LED的点亮或熄灭状态完成对外部中断优先级的调整理论:中断源类型 中断类型 优先级 中断服务号 INT0 – 外部中断0 _51单片机把串口中断设置为最高优先级

zookeeper ACL权限及quotas配额设置_-dzookeeper.digestauthenticationprovider.superdige-程序员宅基地

转载地址:https://www.linuxidc.com/Linux/2016-01/127432.htmZookeeper的ACL机制和Quota机制网上资料较少,这里做一个总结,以供大家参考。1 Zookeeper ACLZooKeeper的权限管理亦即ACL控制功能通过Server、Client两端协调完成:Server端:一个ZooKeeper的节点(znode)存储..._-dzookeeper.digestauthenticationprovider.superdigest=super:gg7s8t3odetiqf6dm

Mysql跟Oracle的对比_mysql和oracle-程序员宅基地

Mysql跟Oracle的对比_mysql和oracle

随便推点

01 kubernetes二进制部署-程序员宅基地

kubernetes部署文档-集群基础部分文章目录kubernetes部署文档-集群基础部分一、系统规划1.1 系统组件分布1.2 部署拓扑1.3 系统环境二、初始化系统环境2.1 升级系统内核2.2内核优化2.3 启用Ipvs内核模块2.4 安装常用工具2.5 安装NTP时间服务2.6 关闭Swap分区2.7 关闭系统防火墙和selinux2.8 设置集群内互为免密登陆三、部署容器环境3.1 部署docker3.2 检查docker环境四、部署Kubernetes4.1 准备集群根证书4.1.1 安装c

将两个已按升序排列的数组合并成一个升序数组,要求在主函数中输入两个数组,并输出合并后的结果。_m个升序排列的数组,写一段程序将这m个数组合并为1个数组-程序员宅基地

【问题描述】将两个已按升序排列的数组合并成一个升序数组,要求在主函数中输入两个数组,并输出合并后的结果,在被调函数中实现合并。【输入形式】输入数组A的元素个数及元素输入数组B的元素个数及元素【输出形式】输出合并后的结果【样例输入】(下划线部分为键盘输入,其余部分为程序输出)Enter n: 3Enter 3 integers: 5 9 11Enter m: 3Enter 3 integers: 1 3 8【样例输出】1 3 5 8 9 11【样例说明】输入提示符_m个升序排列的数组,写一段程序将这m个数组合并为1个数组

vue单页面应用和多页面应用_vue为什么要使用多页面开发?-程序员宅基地

多页应用每一次页面跳转的时候,后台服务器都会给返回一个新的html文档,这种类型的网站也就是多页网站,也叫做多页应用。多页应用为什么多页应用的首屏时间快?首屏时间叫做页面首个屏幕的内容展现的时间,当我们访问页面的时候,服务器返回一个html,页面就会展示出来,这个过程只经历了一个HTTP请求,所以页面展示的速度非常快。为什么搜索引擎优化效果好(SEO)?搜索引..._vue为什么要使用多页面开发?

Apple现行公开的framework简介_apple frameworks-程序员宅基地

文章目录App Framework(11)AppKitBundle ResourcesFoundationSwiftSwiftUITVMLTVMLKitTVMLKit JSTVUIKitUIKitWatchKitGraphics and Games(24)AGLARKitColorSyncCore AnimationCore GraphicsCore ImageGame ControllerGam..._apple frameworks

【数据与封装格式】TS封装格式_努力努力再努力~~的博客-程序员宅基地

涉及到这一点,先写出来,具体格式后续补充不包含文件头。数据大小固定(188Byte)的TS Packet构成,将包一个一个送入到有线电视网络中出传输,这种格式的优点是没有文件头,即便是前面或者后面出错了,也可以正常播放视频。...

多边形绘制-程序员宅基地

绘制模式在绘制多边形时除了默认的填充方式,还可以使用点和线使用glPolygonMode函数来设置模式三种不同模式下的绘图 GL_FILL GL_LINEGL_POINT多边形的两面如果以顺时针绘制则是反面,逆时针绘制则是正面 // 设置正面为填充模式glPolygonMode(GL_FRONT, G