当前位置: 首页 > 知识库问答 >
问题:

TLS版本不匹配(?)

吕志诚
2023-03-14

假设我的客户支持TLS V1。0,1.1和1.2。远程站点支持TLS V1。0和1.1。双方都支持相同的密码。

我的问题是:

1-据我所知,我将始终使用我现有的最高TLS版本启动通信。在这种情况下,我将如何与另一边联系?

2-以下是客户端和服务器之间的Wireshark客户端HELLO捕获,如上所述。

TLSv1.1 Record Layer: Handshake Protocol: Client Hello
    Content Type: Handshake (22)
    Version: TLS 1.2 (0x0303)
    Length: 172
    Handshake Protocol: Client Hello
        Handshake Type: Client Hello (1)
        Length: 168
        Version: TLS 1.2 (0x0303)
        Random
        Session ID Length: 0
        Cipher Suites Length: 52
        Cipher Suites (26 suites)
        Compression Methods Length: 1
        Compression Methods (1 method)
        Extensions Length: 75
        Extension: server_name
        Extension: elliptic_curves
        Extension: ec_point_formats
        Extension: signature_algorithms
        Extension: SessionTicket TLS
        Extension: renegotiation_info

这种连接尝试最终导致“无法创建SSL/TLS安全通道”。我怀疑这与“TLSV1.1记录层”和“版本:TLS1.2(0x0303)”有关。这可能是连接失败的原因吗?

共有3个答案

常雅达
2023-03-14

有两个TLS版本随客户端Hello消息一起发送。第一个是记录层版本,它描述了用于通信的TLS版本。第二个版本是客户端Hello值,它表示客户端支持的最大版本。

我在您的Wireshark捕获中看到了三个TLS版本。不过,我认为“TLSv1.1记录层:握手协议:客户端你好”中对1.1版的引用是错误的。

您的客户机似乎正在发送一个客户机Hello,其中记录层版本1.2中显示了版本1.2。服务器不支持1.2版,因此在记录层拒绝。为了解决这个问题,客户机可以在1.0版记录中发送1.2版客户机Hello。这将允许服务器使用支持1.1版本的1.0版本进行通信,后续通信将使用1.1版本。

虞安康
2023-03-14

假设您有一个旧版本的Wireshark,因为它报告了TLSv1。1,但在随后的数据包中,记录和ClientHello都清楚地指示TLSv1。2.保存捕获,升级Wireshark,然后重新加载捕获。

更新:确保SSL\TLS握手完成非常重要;否则,出于某种原因,Wireshark会在“协议”字段中报告错误的TLS协议版本。

钱展
2023-03-14

客户端开始与ClientHello握手,其中显示它支持的最佳版本,即本例中的TLS 1.2。然后服务器回复ServerHello,其中包含服务器支持的最佳版本,该版本等于或小于客户端提供的版本(即您的情况下的TLS 1.1)。如果客户端不愿意接受此版本(即客户端配置为仅支持TLS 1.2且不低于此版本),它将关闭连接。

 类似资料:
  • 本规范任何时候使用传输层安全性(TLS),基于广泛的部署和已知的安全漏洞TLS的相应版本(或多个版本)将会随时间而变化。在本规范撰写时,TLS 1.2版RFC5246是最新的版本,但它具有非常局限的部署基础,可能还未准备好可以实现。TLS 1.0版RFC2246是部署最广泛的版本并将提供最宽泛的互操作性。 实现也可以支持满足其安全需求的其他传输层安全机制。

  • 我目前在tensorflow中使用RNN时遇到了这个错误: 这个程序需要协议缓冲区运行库的3.3.0版本,但是安装的版本是2.6.1。请更新您的库。如果您自己编译程序,请确保您的标头来自与链接时库相同的协议缓冲区版本。(版本验证失败在"bazel-out/local_linux-opt/genfile/tenorflow/contrib/tensor_forest/proto/fertile_st

  • 当我初始化一个新项目,然后启动Xcode仿真器时,会得到以下消息: React-本机版本不匹配 Javascript版本0.50.1本机版本:0.50.0 确保您已经重新构建了本机代码。... 有没有人知道这里发生了什么,可以帮助我?

  • 我想在共享托管服务器中安装php依赖项,但是作曲家说我的php版本是(对我的依赖项来说太旧了),这是真的,所以我用一个叫做"MultiPHP管理器”。好吧,直到我重试运行,作曲家一直说我的php版本是。 然后我在一个虚拟页面中检查了,它说我的版本是。我还运行了,结果显示我的版本是。 我试过了 重新加载 运行和但它说已禁用,但我使用名为“MultiHP INI编辑器”的cpanel工具启用了它,说已

  • 在 Ubuntu 14.04 LTS 下,我想备份我的 mysql 数据库。 使用 mysql 工作台进行备份时(通过:“服务器”-“数据导出”),我收到通知: mysqldump版本不匹配 /usr/lib/mysql-workbench/mysqldump版本为5.7.9,但要转储的MySQL Server版本为5.7.17。由于mysqldump的版本比服务器旧,因此某些功能可能无法正确备份

  • 问题内容: 在尝试使用Maven 在命令行上 构建应用程序时,我遇到了一个奇怪的问题。(我在SO上看到的其他问题是指在Eclipse或其他一些IDE中进行构建) 当我尝试构建时,maven抱怨它无法在tools.jar中找到Javac。查看给定的位置,很明显Maven正在JRE目录中,但是,我似乎无法让Maven指向我的JDK的正确Java_home- 关于如何执行此操作的任何想法? 环境概况 欢