使用wireshark观察SSL/TLS握手过程--双向认证/单向认证

Nginx开启TLS双向认证流程及配置 是一种可选的优化方案,可以减少握手的长度。它通常用于客户端和服务器之间已经建立了信任的情况下。是客户端和服务器共同协商生成的一个用于加密通信数据的对称密钥。是临时性的,只在会话期间存在,不会存储在客户端或服务器上。的长度通常为256位,但这取决于所使用的密码套件。被泄露,攻击者可能会窃听或篡改通信数据。是否会存储在客户端或服务器上?被泄露,会有什么后果?在TLS握手过程中, 阅读详情

转:http://blog.youkuaiyun.com/fw0124/article/details/40983787

SSL/TLS握手过程可以分成两种类型:

1)SSL/TLS 双向认证,就是双方都会互相认证,也就是两者之间将会交换证书。
2)SSL/TLS 单向认证,客户端会认证服务器端身份,而服务器端不会去对客户端身份进行验证。

我们知道,握手过程实际上就是通信双方协商交换一个用于对称加密的密钥的过程,而且握手过程是明文的。
这个过程实际上产生三个随机数:client random, server random, pre-master secret. 参考图解SSL/TLS协议 .

前两个随机数都是明文传送的,只有pre-master secret是加密的(RSA或者DH)。
一般生成证书的时候,签名算法可以选择RSA或者DSA算法。
如果server使用RSA证书,RSA即可以用作签名也可以用作不对称加密,pre-master secret就是用server的RSA证书中包含的公钥加密的。
如果server使用DSA证书,DSA只能用作签名,所以还需要使用DH算法来交换密钥。

以下是其流程图(摘自rfc5246),括号中的步骤是可选的。
如果是单向认证,那么蓝色字体部分是不需要的。
4 server_key_exchange这一步只有在选择了某些密钥交换算法例如DH算法的时候才需要。

Client

Server

1 Client Hello

2 Server Hello
3 certificate
4 (server_key_exchange)
5 (certificate_request)
6 server_hello_done

7 (certificate)
8 client_key_exchange
9 (certifiate_verify)
10 change_cypher_spec
----finished----
11 change_cypher_spec
----finished----


下面使用wireshark抓取握手过程的报文。server/client使用JAVA7/JSSE编码。

server证书签名算法RSA-双向认证

可见包括了除了4以外的所有步骤。因为采取了RSA算法,所以步骤4是不需要的。

(一) 首先,客户端向服务器提供以下信息

client_hello
(1)支持的协议版本,比如TLS 1.0
(2)支持的加密算法(Cipher Specs)
(3)客户端生成的随机数1(Challenge),稍后用于生成"对话密钥"。

(二)服务器回答给客户端以下信息

server_hello
(1) 确认使用的协议版本
(2) 服务器生成的随机数2,稍后用于生成"对话密钥"
(3) session id
(4) 确认使用的加密算法
certificate
服务器证书
server_key_exchange
如果是DH算法,这里发送服务器使用的DH参数。RSA算法不需要这一步。
certificate_request
要求客户端提供证书,包括
(1) 客户端可以提供的证书类型
(2)服务器接受的证书distinguished name列表,可以是root CA或者subordinate CA。如果服务器配置了trust keystore, 这里会列出所有在trust keystore中的证书的distinguished name。
server_hello_done
server hello结束

(三)客户端发送给服务器

certificate
客户端证书
client_key_exchange
包含pre-master secret。客户端生成第三个随机数。如果是采用RSA算法,会生成一个48字节随机数,然后用server的公钥加密之后再放入报文中;如果是DH算法,这里发送的就是客户端的DH参数,之后服务器和客户端根据DH算法,各自计算出相同的pre-master secret。
certificate_verify
发送使用客户端证书给到这一步为止收到和发送的所有握手消息签名结果。
change_cipher_spec
客户端通知服务器开始使用加密方式发送报文。客户端使用上面的3个随机数client random, server random, pre-master secret, 计算出48字节的master secret, 这个就是对称加密算法的密钥。
finished
客户端发送第一个加密报文。使用HMAC算法计算收到和发送的所有握手消息的摘要,然后通过RFC5246中定义的一个伪函数PRF计算出结果,加密后发送。

(四) 服务器发送给客户端
服务器端发送change_cipher_spec和finished消息。到这里握手结束。


server证书签名算法DSA-双向认证

下面是一个server证书采用DSA算法的握手过程。由于采用了DH算法交换密钥,多了server_key_exchange这一步。

 

server证书签名算法RSA-单向认证

和双向认证相比,server端少了certificate_request,client端少了certificate 和 certificate_verify。


SSL/TLS 双向认证(一) -- SSL/TLS 工作原理 本文部分参考: https://www.wosign.com/faq/faq2016-0309-03.htm https://www.wosign.com/faq/faq2016-0309-04.htm http://blog.youkuaiyun.com/hherima/article/details/52469674 一: SSL/TLS介绍 什么是SSL,什么是TLS呢?官话说SSL是安全套... 阅读详情

相关推荐

对 SSL协议进行wireshark抓包实验

SSL 配置实验对 SSL协议进行抓包实验为了简单,下面实验直接对(校园网) http://10.21.49.130进行抓包,因此要设置抓包的过虑规则为:ip.host==10.21.49.130 未使用SSL协议情况 用 ie 访问下面地址http://10.21.49.130:81/users/sign_in打开登录界面.. 输入用户名 westwood 口令 123456 重新开始抓包 点击

qq965194745的博客 3889

TLS1.2握手过程(双方都进行身份认证)

该证书为Server端向Client端提供的Server证书,mtls与tls主要的区别即为“m(mutual)”,mtls需要双方都提供证书,而tls只需要server证书提供给client(Server证书中含有Server的公钥,tls:将Server证书交给Client,Client将自己想好的会话秘钥用Server的公钥进行加密,再传给Server,Server再用公钥进行解密,这样双方都得到了会话秘钥)Server端让Client端发来Client的证书。根据更改的协议发送示例进行测试。

sweet_Mary的博客 3085

Dell R730安装Windows Server 2008 R2

一、RAID驱动准备  在安装Windows server2008 R2操作系统时,如果没有发现硬盘,请将下面的阵列卡驱动先解压(在下载的.exe文件,双击点下一步会自动解压),解压后把那文件夹复制到U盘中。阵列卡 PERC9 H330 - H730 - H730P - H830 Controllers for Windows Server 2008 R2二、系统安装方法方法一:光盘安装  ①请您...

MarshLin 2万+

ssl双向认证_详解TLS/SSL运行机制

TLS传输层安全性协议(Transport Layer Security)及其前身SSL安全套接层(Secure Sockets Layer)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障,TLS/SSL协议位于网络OSI七层模型的会话层,用来加密通信。TLS/SSL握手过程 第一步,客户端(Client)以明文的形式发起请求信息(client_hello),其中信息包含; 客户端生...

weixin_39827850的博客 755

低代码Agent开发框架使用指南(二)—Coze平台核心功能概览

本篇分享系统介绍了字节跳动推出的低代码智能体开发平台Coze。Coze以免费易用、多模型支持和便捷的跨平台发布为核心优势,显著降低了智能体开发门槛。文章详细解析了平台的六大核心功能:扩展能力边界的插件系统、增强认知的知识库、结构化数据管理的数据库、可视化图像处理的图像流、实现复杂逻辑编排的工作流,以及处理复杂任务的多智能体协作机制,全面展现了Coze平台的强大能力。

weixin_42782643的博客 1358

FPGA+滨淞CCD实战:手把手教你搭建S7031/S10142成像电路(附避坑指南)

本文详细介绍了使用FPGA驱动滨淞CCD传感器(S7031/S10142)构建高精度成像系统的完整实战流程。内容涵盖核心器件选型、系统架构规划、电路板(焦面板与接口板)设计要点、FPGA Verilog逻辑实现,并提供了从电源管理、信号调理到数据采集的详细避坑指南,帮助读者从零搭建稳定可靠的成像电路。

weixin_29271263的博客 227

java ssl 双向通信_使用wireshark观察SSL/TLS握手过程--双向认证/单向认证

2014年11月11日 17:04:23fw0124阅读数 50741更多个人分类:数据加密SSL/TLS握手过程可以分成两种类型:1)SSL/TLS 双向认证,就是双方都会互相认证,也就是两者之间将会交换证书。2)SSL/TLS 单向认证,客户端会认证服务器端身份,而服务器端不会去对客户端身份进行验证。我们知道,握手过程实际上就是通信双方协商交换一个用于对称加密的密钥的过程,而且握手过程是明文的...

weixin_31253409的博客 347

深入浅出ASAP2标准:手把手教你编写和解析A2L文件(含Python示例代码)

本文深入解析ASAP2标准下的A2L文件,涵盖基础概念、文件结构及Python实现代码,帮助开发者掌握汽车ECU标定和测量中的关键数据管理技术。通过详细示例,展示如何编写和解析A2L文件,提升电控数据管理效率。

happy2的博客 1100

c语言 tls单向认证 验证证书,使用wireshark观察SSL/TLS握手过程--双向认证/单向认证...

SSL/TLS握手过程可以分成两种类型:1)SSL/TLS 双向认证,就是双方都会互相认证,也就是两者之间将会交换证书。2)SSL/TLS 单向认证,客户端会认证服务器端身份,而服务器端不会去对客户端身份进行验证。我们知道,握手过程实际上就是通信双方协商交换一个用于对称加密的密钥的过程,而且握手过程是明文的。这个过程实际上产生三个随机数:client random, server random, ...

weixin_29187895的博客 1524

K-L展开 (Karhunen-Loeve expansion)

K-L变换

susan_wang1的博客 2万+

TC397 EB MCAL开发从0开始系列 之 [17.1] ETH配置实战 - ping/发送

TC397 MCAL 从0开始之 ETH ping测试

yy九歌的博客 1507

java ssl单向认证_使用wireshark观察SSL/TLS握手过程--双向认证/单向认证

2014年11月11日 17:04:23fw0124阅读数 50741更多个人分类:数据加密SSL/TLS握手过程可以分成两种类型:1)SSL/TLS 双向认证,就是双方都会互相认证,也就是两者之间将会交换证书。2)SSL/TLS 单向认证,客户端会认证服务器端身份,而服务器端不会去对客户端身份进行验证。我们知道,握手过程实际上就是通信双方协商交换一个用于对称加密的密钥的过程,而且握手过程是明文的...

weixin_39625975的博客 166

华为OD机试 新系统 双机位C卷 往年真题 机考题库(持续收录中)以及算法考点详解

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 7万+

https 单向认证过程_使用wireshark观察SSL/TLS握手过程--双向认证/单向认证

SSL/TLS握手过程可以分成两种类型:1)SSL/TLS 双向认证,就是双方都会互相认证,也就是两者之间将会交换证书。2)SSL/TLS 单向认证,客户端会认证服务器端身份,而服务器端不会去对客户端身份进行验证。我们知道,握手过程实际上就是通信双方协商交换一个用于对称加密的密钥的过程,而且握手过程是明文的。这个过程实际上产生三个随机数:client random, server random, ...

weixin_35880151的博客 294

【Bluetooth|蓝牙开发】三、一篇文章,带你总览蓝牙协议

1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总

Donge's Blog 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

HTTPS--使用wireshark观察SSL/TLS握手过程--双向认证/单向认证

SSL/TLS握手过程可以分成两种类型: 1)SSL/TLS 双向认证,就是双方都会互相认证,也就是两者之间将会交换证书。 2)SSL/TLS 单向认证,客户端会认证服务器端身份,而服务器端不会去对客户端身份进行验证。 我们知道,握手过程实际上就是通信双方协商交换一个用于对称加密的密钥的过程,而且握手过程是明文的。 这个过程实际上产生三个随机数:client random, ser

xiangjai的专栏 9598

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SSL/TSL双向认证过程与Wireshark抓包分析

1、 SSL/TSL基本知识 (1)SSL/TLS协议运行机制:https://blog.youkuaiyun.com/fw0124/article/details/40873253 (2)图解SSL/TLS协议:https://blog.youkuaiyun.com/fw0124/article/details/40875629 (3)SSL/TLS 双向认证(一) -- SSL/TLS工作原理:https://bl...

区块链之美 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: SSL/TLS 协议简介与实例分析
下一篇: SSL/TLS的Java实现--JSSE
lcathm
博客等级 码龄18年 37粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值