首页 > 其他分享 >TLS/SSL 协议 - ClientHello

TLS/SSL 协议 - ClientHello

时间:2023-10-17 11:16:09浏览次数:40  
标签:TLS 字节 套件 SSL Session ClientHello 客户端

ClientHello

在一次新的握手流程中,ClientHello消息总是第一条消息。这条消息将客户端的功能和首选项传送给服务器。客户端会在新建连接后,希望重新协商或者响应服务器发起的重新协商请求(由HelloRequest消息指示)时,发送这条消息。

Wireshark 抓取ClientHello消息:

  • Version
    协议版本(protocol version)指示客户端支持的最佳协议版本。从低到高依次 SSLv2、SSLv3、TLSv1、TLSv1.1、TLSv1.2,当前基本不再使用低于 TLSv1 的版本;

  • Random
    随机数(random)字段包含32字节的数据。当然,只有28字节是随机生成的;剩余的4字节包含额外的信息,受客户端时钟的影响。4个字节以Unix时间格式记录了客户端的协调世界时间(UTC)。协调世界时间是从1970年1月1日开始到当前时刻所经历的秒数,那么时间是不断的上涨的,通过前4字节填写时间方式,有效的避免了周期性的出现一样的随机数。使得“随机”更加“随机”。随机数是用来生成对称密钥的。
    在握手时,客户端和服务器都会提供随机数。这种随机性对每次握手都是独一无二的,在身份验证中起着举足轻重的作用。它可以防止重放攻击,并确认初始数据交换的完整性。

  • Session ID
    在第一次连接时,会话ID(session ID)字段是空的,这表示客户端并不希望恢复某个已
    存在的会话。在后续的连接中,这个字段可以保存会话的唯一标识。服务器可以借助会话ID在自己的缓存中找到对应的会话状态。
    如果Session id length有值,对于 SSL 2.0 Session id length 0~16字节,其后的版本扩大到32字节。本报文中Session id length是0,后面就没有跟Session id,直接是Cipher suit length。
    Session id并不一定是32字节,RFC规定可以0~32字节。只是Session id由服务器生成,服务器普遍采用OpenSSL,而OpenSSL基本只生成32字节的session id,如果碰到其他字节长度的Session id,切莫认为是异常client hello。

  • Cipher Suites

密码套件(cipher suite)块是由客户端支持的所有密码套件组成的列表,该列表是按优先级顺序排列的。加密套件列出了客户端能够支持的加密方式、算法等信息。不同的加密套件性能不一样,安全性不一样,也导致了SSL交互报文的不一样。

例如,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 各字段含义:

字段TLSECDHERSAWITHAES_256_GCMSHA384
解释 代表TLS协议 对称加密密钥交换算法 非对称密钥算法,也就是公钥/私钥算法 分割作用 对称加密算法 哈希算法

示例1:
TLS_RSA_WITH_RC4_128_SHA1,它表示,密钥交换使用RSA,身份认证算法用RSA(证书是身份认证一部分,我们还需要用RSA去验证证书),对称加密算法使用RC4,摘要算法使用SHA1。

示例2:
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA1,它表示,密钥交换算法使用ECDHE(短暂椭圆曲线),身份认证算法使用ECDSA,对称加密算法使用AES_128_CBC,摘要算法使用SHA1。

客户端把自己所支持的加密套件全部发送给服务器,服务器会从中选择一个加密套件。每个加密套件用2字节表示。每个加密套件用2字节表示,这里一共30个加密套件,所以理所当然的,Cipher Suits Length是30 * 2 = 60字节。

  • Compression
    客户端可以提交一个或多个支持压缩的方法。默认的压缩方法是null,代表没有压缩。
  • Extensions
    扩展(extension)块由任意数量的扩展组成。这些扩展会携带额外数据。TLS扩展是一种通用目的的扩展机制,使用这种机制可以在不修改协议本身的条件下为TLS协议增加功能。
    例如:Server_name(SNI):

SSL存在验证证书的时候,有这么一个判断:比较“浏览器输入的地址”和“获取的证书的名称”。如果一样,那么接着验证,如果不一样,那么认为证书是不可信的。

[参考文献]

  1. 百度百科 SSL
  2. 《HTTPS 权威指南:在服务器和Web应用上部署SSL/TLS和PKI》
  3. SSL/TLS握手过程 https://www.cnblogs.com/barrywxx/p/8570715.html
  4. TLS/SSL 协议详解 (9) Client hello https://blog.csdn.net/mrpre/article/details/77867439
  5. 例说图解TCP/IP协议族--TLS篇(1)抓包分析SSL/TLS握手 https://blog.csdn.net/Wendy019900107/article/details/90042622

标签:TLS,字节,套件,SSL,Session,ClientHello,客户端
From: https://www.cnblogs.com/lcword/p/17769196.html

相关文章

  • @SuppressLint("NotifyDataSetChanged")
    @SuppressLint("NotifyDataSetChanged")注解的功能是用于在Android开发中抑制与notifyDataSetChanged方法相关的Lint警告或错误。在Android开发中,当你使用适配器(例如ArrayAdapter、BaseAdapter等)来填充ListView或RecyclerView等视图时,通常会调用notifyDataSetChanged方法,以通知......
  • 禁用Ubuntu Release TLS更新
    在使用ubuntu进行开发,会有如下提示WelcometoUbuntu12.04.5LTS(GNU/Linux3.4.0-030400-generici686)*Documentation:https://help.ubuntu.com/Newrelease'14.04.1LTS'available.Run'do-release-upgrade'toupgradetoit.禁用方法:vim/etc/update-......
  • jclasslib的安装
    双击安装包打开后点击下一步,然后选择安装的路径。默认路径,如果c盘有空间不建议更改路径,然后再次点击下一步依然选择下一步最后点击完成即可完成安装。现在可以使用啦注:如果需要安装包,请点击下面链接:专业的字节码查看工具——jclasslib......
  • windows系统安装openssl并且转换证书格式
    概述碎碎念,如果你有MAC电脑,就别折腾了,直接用MAC电脑吧,不用安装直接用openssl本文主要讲到了openssl的基本使用方法,开发环境为windows,开发工具为VS2019.本文主要是说明openssl如何使用,不介绍任何理论知识,如果有不懂的,请自行百度。个人建议下一个everything查询工具,真的很好用,比......
  • Loadrunner12.5-录制http://www.gw.com.cn/网页时提示“SSL身份验证失败”错误
    问题:LR产品,录制http://www.gw.com.cn/网页时提示下图错误,这是为什么呢?请在如下recordingoptions中选择正确的SSL版本,再进行录制。注:如何确定那个SSL版本是正确的呢?答:需要与网站这边进行确认,问他们网站使用的SSL版本是多少? ......
  • idea 中无法连接 sql server 数据库,报错 [08S01] 驱动程序无法通过使用安全套接字层(S
    报的错误信息如下:[08S01]驱动程序无法通过使用安全套接字层(SSL)加密与SQLServer建立安全连接。错误:“PKIXpathbuildingfailed:sun.security.provider.certpath.SunCertPathBuilderException:unabletofindvalidcertificationpathtorequestedtarget”。ClientC......
  • nginx 关闭TLS 1.0 TLS 1.1
    server{listen443ssl;server_namewww.XXX.com;proxy_read_timeout3600s; #设置读取超时时间ssl_certificateC:/xxxx.pem;ssl_certificate_keyC:/xxxx.key;ssl_session_cachesha......
  • 每年的免费SSL证书,你们都是要去操作续期?
    如标题所问,大家的免费证书估计都是去阿里云免费拿的,但有效期是一年,每次到期都需要再去申请并且去替换自己服务器的证书。不知道大家有没有了解FreeSSL,我近期发展这个网站https://freessl.cn,如果你们都是个人站点,对证书没什么特别要求,可以考虑用他们家生成的证书,并且能自动续费,完......
  • tp5 php 阿里OS RequestCoreException: cURL error: SSL certificate problem: certif
    出现这种情况,肯定是域名SSL证书过期。现在出现问题:提交表单出现这种情况,网址不是https的,之前一直也没有问题,一开始想不通网址都不是HTTPS为什么还会有SSL证书的问题,检查了下发现上传中图片是上传到阿里OSS的(https://img.oss.xxx.com),里边就用到了HTTPS域名,原来是这样里,一查发现过......
  • OpenSSL 生成 RootCA (根证书)并自签署证书(支持 IP 地址)
    背景某机房内部访问需要配置HTTPS,网上找的一些证书教程都不是特别好,有些直接生成证书,没有根CA的证书导致信任不了Ubuntu机器,有些教程只有域名生成,没有IP生成,有些甚至报错。故发一个笔者在Ubuntu22.04机器上测试正确可用的流程,这里使用10.12.0.2作为例子生成一个证书......