SSL / TLS协议解析!SNI 识别
自Web诞生以来,我们所接触的互联网时代,都有可能存在信息的截断,而SSL协议及其后代TLS提供了加密和安全性,使现代互联网安全成为可能。
这些协议已有将近二十多年的历史,其特点是不断更新,旨在与日趋复杂的攻击者保持同步。
什么是SSL!什么是TLS!
SSL代表安全套接字层,该协议是由Netscape于1990年代中期开发的,Netscape是当时最受欢迎的Web浏览器。SSL 1.0从未向公众发布,而SSL 2.0具有严重的缺陷。1996年发布的SSL 3.0进行了彻底的改进,为后续工作奠定了基础。
而TLS与SSL,当一版本于1999年发布时,它由Internet工程任务组(IETF)进行了标准化,并被赋予了一个新名称:传输层安全性( TLS)。
正如TLS规范指出的那样,“此协议与SSL 3.0的区别并不明显。” 因此,TLS和SSL并不是真正的问题。而是,这两者形成了一系列不断更新的协议,并且经常被合并为SSL / TLS。
这样我们就明白了TLS(传输层安全性)只是SSL的更新,更安全的版本。目前已经升级到TLS1.3版本,TLS协议对所有类型的Internet通信进行加密。最常见的是网络流量;
简而言之,它们是保持Internet连接安全并保护两个系统之间发送的任何敏感数据的标准技术,可防止犯罪分子读取和修改所传输的任何信息,包括潜在的个人详细信息。
SSL/TLS握手过程
握手过程非常复杂,并且协议允许有多种变体。以下步骤提供了一个大致的概述。
第一
- 客户端与服务器联系并请求安全连接。服务器以密码套件列表(即创建加密连接的算法工具包)答复
- 客户端将其与其自己的受支持密码套件列表进行比较,选择一个,然后让服务器知道它们都将使用它。
第二
- 服务器提供其数字证书,该数字证书是由第三方机构颁发的确认服务器身份的电子文档。包含服务器的公共加密密钥等等。
- 客户端收到证书后,便会确认证书的真实性。
第三
客户端和服务器使用服务器的公共密钥,建立会话密钥,这两个会话密钥将用于会话的其余部分以加密通信。有几种技术可以做到这一点。
客户端可以使用公共密钥对随机数进行加密,然后将其发送到服务器进行解密,然后双方都可以使用该数字来建立会话密钥。
或者,两方可以使用所谓的Diffie-Hellman密钥交换来建立会话密钥。
TLS1.2和TLS1.3比较
TLS1.2它也允许使用较旧的加密技术,以支持较旧的计算机。不幸的是,这使它容易受到攻击,在中间人攻击中,黑客拦截了通信中的数据包,并在读取或更改数据包后将其发送出去。
幸运的是,TLS1.3通过抛弃对旧加密系统的支持,填补了许多此类漏洞。使通信中的数据包受到了保护。
什么是SNI
Server Name Indication (SNI) 是TLS协议(以前称为SSL协议)的扩展,该协议在HTTPS中使用。它包含在TLS/SSL握手流程中,以确保客户端设备能够看到他们尝试访问的网站的正确SSL证书。该扩展使得可以在TLS握手期间指定网站的主机名或域名 ,而不是在握手之后打开HTTP连接时指定。
SNI的技术原理
SNI通过让客户端发送虚拟域的名称作为TLS协商的ClientHello消息的一部分来解决此问题。这使服务器可以及早选择正确的虚拟域,并向浏览器提供包含正确名称的证书。
这样要说一下,服务器名称指示(SNI)有效负载未加密,因此客户端尝试连接的服务器的主机名对于被动的窃听者是可见的。
TLS的SNI扩展有什么作用?
- Web服务器通常负责多个主机名–或域名。如果网站使用HTTPS 则每个主机名将具有其自己的SSL证书。
- 在HTTPS中,先有TLS握手,然后才能开始HTTP对话。如果没有SNI,客户端将无法向服务器指示正在与之通信的主机名。
- 如果服务器可能为错误的主机名生成SSL证书。那么SSL证书上的名称与客户端尝试访问的名称不匹配,则客户端浏览器将返回错误信息,并通常会终止连接。
- 通过 SNI,拥有多虚拟机主机和多域名的服务器就可以正常建立 TLS 连接了。
下面,我们就开始对TLS协议的SNI进行解析。
TLS协议的SNI识别
这里给出的只是一部分代码实现。
int main(int argc, char* argv[])
{char errbuf[1024];pcap_t *desc = 0;char *filename = argv[1];if (argc != 2){printf("usage: ./dissect_tls [pcap file]\n");return -1;}return 0;
}
编译运行:
在客户端到服务端方向的 ClientHello 包中,提取 SNI 扩展字段中的 SNI_NAME 字段,通过数据包偏移量进行逐步匹配得到 SNI_NAME。对 SNI_NAME 进行规则匹配。
总结
这篇文章只是对SSL/TLS做一些简单的介绍,想通过更多认识,可以阅读官方的RFC文档,对于SNI(Server Name Indication)是 TLS 的扩展,它主要是用来解决一个服务器拥有多个域名的情况。通过 SNI,拥有多虚拟机主机和多域名的服务器就可以正常建立 TLS 连接了。
欢迎关注微信公众号【程序猿编码】,需要SSL/TLS源码和报文的添加本人微信号(17865354792)
SSL / TLS协议解析!SNI 识别相关推荐
- SSL/TLS 协议简介与实例分析
作者:drinkey 以前读RFC时总结的一篇文章,主要介绍了SSL/TLS协议的相关知识,包括协议本身以及简单的密码学概念,以及用实例解析了HTTP over SSL的协商过程,在最后简要列出了SS ...
- SSL / TLS协议中数字签名与hash算法的联系
今天要为大家介绍的是哈希算法,在介绍SHA之前,只有了解什么是SHA,我们才清楚SSL证书如何使用哈希来形成数字签名.那么什么是哈希呢? HASH算法将任意长度的二进制值映射为较短的固定长度的二进制值 ...
- 假如让你来设计SSL/TLS协议,你要怎么设计呢?
本文分享自华为云社区<假如让你来设计SSLTLS协议>,作者:元闰子. 前言 说起网络通信协议,相信大家对 TCP 和 HTTP 都很熟悉,它们可以说是当今互联网通信的基石.但是,在网络安 ...
- 车联网通信安全之 SSL/TLS 协议
前言 在汽车出行愈加智能化的今天,我们可以实现手机远程操控车辆解锁.启动通风.查看车辆周围影像,也可以通过 OTA(空中下载技术)完成升级车机固件.更新地图包等操作,自动驾驶技术更是可以让车辆根据路面 ...
- SSL/TLS协议原理与证书签名多种生成方式实践指南
本章目录: 0x00 前言简述 CA 认证原理 PKI 公钥基础设施 0x01 自签名SSL证书生成 1.在线(脚本)生成 2.OpenSSL 生成 3.CFSSL 生成 0x03 cfssl 使用实 ...
- SSL/TLS协议信息泄露漏洞(CVE-2016-2183)修复
SSL/TLS协议信息泄露漏洞(CVE-2016-2183) 详细描述 TLS是安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性. TLS, SSH, IPSec协商及其他产品中使用的 ...
- http和https的区别 与 SSL/TLS协议运行机制的概述
http和https的区别 与 SSL/TLS协议运行机制的概述 参考1 1 http 是不使用的SSL/TSL的通信通道 窃听风险:第三方获取通信内容 篡改风险:修改通信内容 冒充风险:冒充他人身份 ...
- 简单了解SSL/TLS协议
今天小编就为大家带来一篇关于SSL/TLS协议的文章.小编觉得挺不错的,为此分享给大家做个参考.一起跟随小编过来看看吧. TLS名为传输层安全协议(Transport Layer Protocol) ...
- SSL/TLS协议运行机制的概述
1. 作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,带来了三大风险: (1)窃听风险(eavesdropping):第三方可以获知通信内容. (2)篡改风险(tampe ...
- 聊聊HTTPS和SSL/TLS协议
要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 2. 大致了解 HTTP 和 TCP 的关系(尤其是"短连接 ...
最新文章
- php date 转换 string_php将时间差转换为字符串提示
- 《速读ES7》新增特性目录列表
- Nacos安装详细过程
- 双层玻璃窗的功效模型matlab,数学建模实例双层玻璃的功效
- 超长正整数加法 c语言,两个超长正整数的加法
- Neo4j下载(linux系统)
- AVATR阿维塔11维修手册电路图技术资料
- elk报错:[syslogs] index has exceeded [1000000]
- AUC、KS值、PSI值理解
- 阿里云ecs服务器买完后可以更换操作系统么?
- 管理的常识(2):什么是领导
- 关机或重新启动电脑勾选再次登录时重新打开窗口导致无法上网
- MATLAB的交互式界面 简易设计
- python编辑器windows_windows下sublime Text 3 做Python编辑器 详细配置
- LaTeX中插入两个并排的图片
- JAVA日记之SpringJdbcTemplate/声明式事务控制 ----喝最烈的酒.
- 《Python基础教程》第5章 条件、循环及其他语句
- 异地数据库同步解决方案
- linux远程桌面x11,Ubuntu系统安装X11VNC实现远程可视化桌面操作
- 2022年软考初级网络管理员备考指南