OpenSSL握手协议分析

OPENSSL s_client 实例测试- SSL连接单向验证 近日在开发项目时使用到wifi,3/4G通讯。 由于行业问题,当连接服务器时需要对服务器,客户端做双向认证。 在行业内,设备需要进行PCI认证,所有的通讯必须进行加密,连接服务器必须支持双向认证,以保证连接的服务器是安全的,保证客户端设备是授权的。 测试准备 操作工具:OPENSSL 可自行下载安装。 客户端证书,以及客户端私钥。 测试过程 以下过程我们以: www.baidu.com 为服务器,测试客户端。 openssl版本信息 C:\Users\Risten&gt... 阅读详情

一、 SSL握手协议(SSL Handshake Protocal)

SSL握手协议的作用是在正式的秘密通信之前,让服务器和客户之间互相鉴别对方的身份并协商一种会话的加密算法和加密密钥,主要分为两个方面:

1)客户端和服务器之间互相验证身份

C/S主要是通过证书来验证对方的合法性。合法性包括:证书是否过期、发行服务器证书的CA是否可靠、发行者证书的公钥能否正确解开服务器证书的“数字签名”,服务器证书上的域名是否和服务器的实际域名想匹配。如果证书合法,接着从这个证书中提取出对方的公钥。

2)客户端和服务器之间协商安全参数

        协商的参数一般包括协议的版本号、密钥交换算法、数据加密算法和hash算法,通过协商达成一致性。其实版本号一般要求一致。

二、SSL握手过程

SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术。SSL 的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其主要过程如下:
  ① 客户端的浏览器向服务器传送客户端 SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。
  ② 服务器向客户端传送 SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。
  ③ 客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的 CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过, 通讯将断开;如果合法性验证通过,将继续进行第四步。
  ④ 用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。 
  ⑤ 如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。 
  ⑥ 如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的 CA 是否可靠,发行 CA 的公钥能否正确解开客户证书的发行 CA 的数字签名,检查客户的证书是否在证书废止列表(CRL)中。检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的私钥解开加密的“预主密 码”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。
  ⑦ 服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于 SSL 协议的安全数据通讯的加解密通讯。同时在 SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。 
  ⑧ 客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。
  ⑨ 服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。
  ⑩ SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。   

 

双向认证 SSL 协议的具体过程

① 浏览器发送一个连接请求给安全服务器。

  ② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器。 
  ③ 客户浏览器检查服务器送过来的证书是否是由自己信赖的 CA 中心所签发的。如果是,就继续执行协议;如果不是,客户浏览器就给客户一个警告消息:警告客户这个证书不是可以信赖的,询问客户是否需要继续。
  ④ 接着客户浏览器比较证书里的消息,例如域名和公钥,与服务器刚刚发送的相关消息是否一致,如果是一致的,客户浏览器认可这个服务器的合法身份。 
  ⑤ 服务器要求客户发送客户自己的证书。收到后,服务器验证客户的证书,如果没有通过验证,拒绝连接;如果通过验证,服务器获得用户的公钥。 
  ⑥ 客户浏览器告诉服务器自己所能够支持的通讯对称密码方案。
  ⑦ 服务器从客户发送过来的密码方案中,选择一种加密程度最高的密码方案,用客户的公钥加过密后通知浏览器。 
  ⑧ 浏览器针对这个密码方案,选择一个通话密钥,接着用服务器的公钥加过密后发送给服务器。
  ⑨ 服务器接收到浏览器送过来的消息,用自己的私钥解密,获得通话密钥。 
  ⑩ 服务器、浏览器接下来的通讯都是用对称密码方案,对称密钥是加过密的。 
  上面所述的是双向认证 SSL 协议的具体通讯过程,这种情况要求服务器和用户双方都有证书。单向认证 SSL 协议不需要客户拥有 CA 证书,具体的过程相对于上面的步骤,只需将服务器端验证客户证书的过程去掉,以及在协商对称密码方案,对称通话密钥时,服务器发送给客户的是没有加过密的 (这并不影响 SSL 过程的安全性)密码方案。 这样,双方具体的通讯内容,就是加过密的数据,如果有第三方攻击,获得的只是加密的数据,第三方要获得有用的信息,就需要对加密的数据进行解密,这时候的 安全就依赖于密码方案的安全。而幸运的是,目前所用的密码方案,只要通讯密钥长度足够的长,就足够的安全。这也是我们强调要求使用 128 位加密通讯的原因。



          


OPENSSL s_client 实例测试- SSL连接双向验证 在特殊情况下,我们需要使用TLS的双向认证,大部分网站都是支持双向认证的,但是并不是强制的。 在连接网站时,我们只关注这个网站是不是经过认证的网站,而不是钓鱼网站。但很少有网站要求,客户端必须是我允许的,经过我认证的,才可以连接。 在此我们对双向验证做个测试,使用的公司必须进行双向认证的服务器。 测试分为三个: 1、不带证书,连接服务器 2、带错误证书,连接服务器 3、带正确证书连接服务器 测试准备 操作工具:OPENSSL 可自行下载安装。 自签名证书,自签名证书的私钥 ... 阅读详情

相关推荐

openssl s_client s_server双向认证

1 自建CA-certs目录[root@localhost ~]# tree tls tls ├── 1 │   ├── 1.crt │   ├── 1.csr │   └── 1.key ├── 2 │   ├── 2.crt │   ├── 2.csr │   └── 2.key ├── certs ├── crl ├── index.txt ├── index.txt.attr ├── in...

来说意义非凡3 1万+

SSL协议与数字证书原理

<br />SSL协议与数字证书原理<br />SSL 协议的握手和通讯<br />  为了便于更好的认识和理解 SSL 协议,这里着重介绍 SSL 协议的握手协议。SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术。SSL 的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其主要过程如下: <br />① 客户端的浏览器向服务器传送客户端 SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户

xinew的专栏 1120

使用openssl工具来验证服务器证书以及握手过程

背景 由于最近openssl的心脏问题,更换了1.0.1g的ssl库,工作上需要使用这个库连接服务器,但是发现更换库之后,对于某些域名的ssl握手就会出现失败的情况。为了找出失败的原因,最后在openssl自带的工具发现可以跟踪握手情况 跟踪网站的ssl端口 1.跟踪不带任何协议参数握手情况 openssl s_client -connect gmail.com:443 CON

tzdjzs的专栏 1万+

用Wireshark看见TLS握手过程

第一部分:介绍TLS握手协议内容。(非常粗略的介绍,详见《图解密码技术》-- 结城浩 – 第14章 SSL/TLS 为了更安全的通信) 第二部分:安装wireshark,使用其进行抓数据包,为后面TLS分析做准备。 第三步:详细查看TLS握手的每一步。最后使用一个示例验证握手过程的掌握情况。

大草的博客 5274

openssl s_client工具详解

是 OpenSSL 工具中的一个命令,用于建立和测试 SSL/TLS 连接。它通常用于诊断和测试 SSL/TLS 服务的运行情况。openssl 版本3.0X。

N阶二进制的博客 6300

OpenSSL 源码分析与应用实战

本文还有配套的精品资源,点击获取 简介:OpenSSL 是网络安全领域的基石,提供 SSL/TLS 协议、加密算法和密钥管理功能。本课程设计项目包含了 OpenSSL 源码,旨在帮助学生深入理解其内部工作原理,并通过实战任务掌握其应用。学生将分析源码结构,构建 OpenSSL,并学习如何调用 API 进行加密解密和证书管理。本项目将提升学生在网络安全领域的技能,为其在实际应...

weixin_36012152的博客 1529

l2tp连接尝试失败 因为安全层在初始化_电子商务安全:SSL协议

1、SSL/TLS Session的定义 ?2、SSL/TLS的四种协议及它们各自完成的功能3、SSL/TLS握手协议的流程 (画图)?什么是SSLSSL (Secure socket Layer)安全套接层协议是一种在客户端和服务器端之间建立安全通道的协议,主要是使用公开密钥体制和X.509数字证书技术保护信息传输的机密性和完整性,它不能保证信息的不可抵赖性,主要适用于点对点之间的信息传输,常用...

weixin_39885690的博客 310

OpenSSL-s-client 和 s-server

基于s_client 和 s_server 的单向认证和双向认证的抓包数据

‌网络安全编程:C++中的TLS协议深度解析

TLS(Transport Layer Security)协议是保障网络通信安全的基石,广泛应用于HTTPS、邮件加密等场景。以下从协议原理、C++实现及安全实践三个层面深度解析。:完整实现需处理边缘场景(如证书吊销检查、ALPN协商)。及OpenSSL文档。

2501_93896032的博客 1581

嵌入式开发中Tab与空格混用的危害与统一规范实践

在软件工程中,代码格式一致性是保障可读性与团队协作效率的基础。从原理上看,制表符(Tab)与空格(Space)在存储与显示机制上存在本质差异:Tab是控制字符,其显示宽度取决于编辑器设置;空格则是固定宽度的字符。这种差异导致混用时会引发代码对齐错乱、版本控制冲突及跨平台兼容性问题,严重影响工程的可维护性。尤其在嵌入式开发领域,资源受限环境与高可靠性要求使得统一的编码规范更为关键。通过配置编辑器、集成clang-format等自动化工具,可以强制实现缩进风格的一致性,从而提升代码质量与团队协作效率。本文聚焦于

weixin_42545636的博客 276

泛微OA与金蝶云星空深度集成实战:审批与表单双场景解析

本文深入解析泛微OA与金蝶云星空的深度集成实战,聚焦审批流程与表单对接两大核心场景。通过具体案例,详细阐述了如何实现业务数据与审批流程的自动联动,打破数据孤岛,提升企业运营效率与数据一致性,并分享了接口设计、安全策略及实战避坑指南。

4k5l6j7h8的博客 466

SSL 协议分析:ClientHello 过程分析

     最近在分析某个PC端程序的登录过程,发现它用的是openssl进行https通讯的。 由于以前没有openssl的使用经验,遂开始学习这个库,在这里记录一些TLS协议的原理, 以及openssl实现TLS协议的代码分析。(TLS 相当于 SSL 协议的后续版本。) 画了一个丑陋的简图:         图的右边代表时间的方向。按照时间顺序,显然是客户端先发起 TLS 请求,...

cwg2552298的博客 1万+

若依前后端分离版实战:MQTT集成保姆级教程(含MQTTX测试工具使用)

本文详细介绍了在若依前后端分离架构中集成MQTT协议的完整流程,包括环境搭建、核心配置、安全实践及性能优化。通过MQTTX测试工具的使用和实战代码示例,帮助开发者快速实现物联网场景下的实时通信功能,提升系统稳定性和效率。

weixin_30664051的博客 456

TLS/SSL协议详解与握手过程分析

TLS/SSL在应用层协议(如HTTP、SMTP、FTP)与传输层协议(TCP)之间插入了一个安全层,为网络通信提供机密性、数据完整性和服务器/客户端身份认证。在渗透测试与安全攻防体系中,理解TLS/SSL不仅是评估Web应用、API服务、邮件服务器等各类服务安全性的前置条件,更是识别和利用中间人攻击、降级攻击、证书欺骗等高级威胁的必备知识。其前身是网景公司开发的SSL。· 密钥派生:通过一系列密码学原语(PRF),从预备主密钥生成一组实际的加密密钥、MAC密钥和初始化向量,确保密钥材料的安全性和唯一性。

Alfadi联盟 萧瑶的博客 809

解决redhat8/centos8无法使用yum问题(报错:This system is not registered to Red Hat Subscription Management)

解决redhat无法使用yum问题、以及替换repo文件后仍无法使用yum的问题

qq_43569119的博客 4342

[Unity Demo]从零开始制作空洞骑士Hollow Knight第四集:制作更多的敌人

大家好久不见,终于放完中秋假期可以回自己家里打代码了,上一期我介绍了为什么和如何导入2D toolkit以及制作一个完整的敌人(就是那只蚊子包括了精灵,动画,状态机行为以及脚本)现在不妨趁热打铁制作更多的敌人。

dangoxiba的博客 1974

信安实验:环境搭建与TLS协议分析

关闭所有浏览器窗口,删除历史记录。出现没有Certificates可能是浏览器或客户端缓存了之前的 TLS 会话,跳过了证书交换关闭所有浏览器窗口,清除 SSL/TLS 会话状态。Named Curve为椭圆曲线类型,Pubkey为服务器的临时公钥,用于计算预主密钥。Pubkey 中04 开头表示未压缩格式的椭圆曲线公钥,后续64字节是公钥的实际值(X 和 Y 坐标,各 32 字节)。密码套件是服务器从 Client Hello 的套件列表中选定的一个,可以看到客户端支持0xc02f,服务器也选择它。

m0_74397159的博客 811

苍穹外卖项目面试总结话术

美食速递这个项目最初是我参与制作的大创项目,是一款为中南学生提供校园外卖送至宿舍服务的软件,包含系统管理后台和小程序端两部分。其中系统管理后台主要提供给食堂内部员工使用,可以对食堂各个窗口、员工、订单、菜品等进行维护管理;小程序端可以在线浏览菜品、添加购物车、下单等,由学生兼职做跑腿送餐上门服务。这是个前后端分离的项目,我主要是负责后端的用户登录、员工管理,菜品管理,订单管理模块的编码实现。

qq_45195447的博客 1万+

Windows 10 x64 专业版 编译与测试【调试】Openssl【OpenSSL_1_0_2h】之 TLS

本人出于对 OpenSSL 的 TLS 协议的好奇,而走上了调试 OpenSSL 的道路。 在调试过程中也遇到过很多的坑,现在调试成功了,便记录下来,方便日后查看, 由于各种原因,我选择的 OpenSSL 的版本为: OpenSSL_1_0_2h 目录 0x01 下载 OpenSSL 源码 0x02 配置开发环境 0x03 编译 OpenSSL 0x04 编译带符号的 OpenSSL...

u012332816的博客 4518

2023-12-26~2025-07-04备份

一、海康视觉与汇川机器人 服务器-客户端通信设置IP在同一网段名称IP端口类型海康相机工控机7930服务器机器人3000客户端海康VM服务器设置1通信管理 增添TCP服务端,设置本机IP:192.168.0.20,端口号79302 协议解析 通信双方约定通信格式(设置收发数据格式,分隔符)机器人客户端设置(不同类型机器人设置有差别)1 通讯服务设置 设置连接服务器IP、服务端端口号、机器人端口号,确保连接正常2 协议解析 使用指令代码构建通讯解析。

青铜小码农 3126

电磁场仿真:电磁场基础理论_(13).微波技术基础

微波是指频率在300 MHz到300 GHz之间的电磁波。这一频率范围对应的波长为1米到1毫米。

2401_87715305的博客 1318

OpenSSL TLS 1.3实现详解:零往返时间握手协议

TLS 1.3作为传输层安全性(Transport Layer Security,TLS)协议的重大升级,通过重构握手流程将连接建立延迟降低至零往返时间(Zero Round-Trip Time,0-RTT),同时强化了安全性与性能。本文将深入解析OpenSSL中TLS 1.3的实现原理,重点剖析0-RTT握手协议的工作机制及关键代码实现。 ## TLS 1.3协议核心改进 TLS 1.3相比...

gitblog_01115的博客 793

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: 利用OpenSSL库对Socket传输进行安全加密(RSA+AES)
下一篇: OpenSSL API编程
coo1fish
博客等级 码龄14年 22粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值