问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

TLS1.2 TLS1.3握手协议区别和问题排查

创作时间:
作者:
@小白创作中心

TLS1.2 TLS1.3握手协议区别和问题排查

引用
1
来源
1.
https://www.pianshen.com/article/79501350394/

本文将深入探讨SSL/TLS握手协议的工作原理及其在TLS 1.2和TLS 1.3版本中的区别,并提供详细的故障排查指南。无论是客户端还是服务器端的问题,你都将在这里找到解决方案。

SSL/TLS握手协议是什么?

在每个HTTPS连接开始时,客户端(用户的web浏览器)和服务器(托管网站)必须经过一系列检查,以相互验证并确定加密连接的参数。TLS握手完成三件事:

  1. 将服务器验证为非对称公钥/私钥对的合法所有者
  2. 确定将用于连接的TLS版本和密码套件
  3. 交换将用于通信的对称会话密钥

从历史上看,握手给连接增加了一点延迟,但TLS协议的最新版本已经解决了这种延迟问题。目前,有两种不同版本的TLS握手正在使用中:

  • TLS 1.2使用握手,在客户端和服务器之间进行多次往返。
  • TLS 1.3将TLS握手改进为一次往返,这减少了连接启动所需的时间,并使一切都更加高效。

SSL/TLS握手失败错误概述

为了使本文更易于理解,我们将介绍SSL/TLS握手失败错误的所有可能原因以及谁可以修复这些错误:

原因
描述
解决方案
系统时间不正确
客户端设备的日期和时间不正确
客户端
浏览器错误
浏览器配置错误导致的错误
客户端
中间人攻击
第三方拦截或操纵连接
客户端
协议不匹配
客户端使用的协议服务器不支持
服务器
密码套件不匹配
客户端使用的密码套件服务器不支持
服务器
证书不正确
URL主机名与服务器证书不匹配
证书链不完整或无效
证书已过期或吊销
服务器
SNI启用服务器
客户端无法与SNI启用的服务器通信
服务器

SSL/TLS握手失败-客户端错误

当握手失败时,通常是网站/服务器及其SSL/TLS配置的问题。但是,在一些上下文中,客户端错误也可能导致SSL/TLS握手失败错误。

系统时间不正确

确保你的系统时间正确。SSL/TLS证书的寿命有限,时间很重要。如果系统时间不正确,可能会导致TLS握手出现问题。

浏览器错误

尝试使用另一个浏览器。如果你使用的是Google Chrome,可以切换到苹果Safari或微软Edge等操作系统的原生浏览器,或者使用Mozilla Firefox。如果在其他浏览器中能够正常连接,说明可能是当前浏览器的插件或设置有问题。解决方法是将浏览器重置为默认设置并禁用所有插件。

中间人攻击

中间人(MITM)通常被描述为企图窃取信息或造成伤害的邪恶黑客。有时,这些设备的问题会导致TLS握手失败。如果问题是客户端,你可以尝试调整防病毒或VPN设置。一般来说,应该有一种方法可以列出白名单,或者为有问题的站点创建一个异常。

SSL/TLS握手失败:服务器端错误

大多数时候,SSL/TLS握手失败是服务器端问题的结果。

协议不匹配

这实际上是一个在客户端和服务器端都可能发生的错误。如果由于协议不匹配而导致SSL/TLS握手失败错误,则意味着客户端和服务器对同一TLS版本没有相互支持。服务器不应该修复这个问题。在此示例中,客户端应升级其浏览器,或者在浏览器为当前版本的情况下,将其配置为支持最新的TLS版本。

密码套件不匹配

这与协议不匹配非常相似——只是更精细一些。SSL/TLS不仅仅是一个处理所有事情的算法,它实际上是一个提供不同功能并与SSL/TLS协同工作的算法集合。如果执行SSL桥接(边缘设备接收和解密HTTPS通信量,然后对其进行重新加密,以便将其发送到应用程序服务器),则在网络中经常会发生这种情况。如果边缘设备和应用程序服务器不共享相互支持的密码套件,将导致错误。

SSL/TLS证书不正确

有很多不同的东西可以使浏览器将SSL/TLS证书视为不正确,并阻止握手成功完成。

  • 主机名不正确:这曾经是WWW和非WWW版本的网站的一个问题,但证书颁发机构社区通常会减少这一问题,允许将一个站点免费列为SAN。此问题通常可以通过重新颁发证书或有时使用通配符证书来解决。
  • 证书链不正确:当浏览器收到SSL/TLS证书时,它要做的检查其真实性的一件事就是跟踪签名。它查看SSL/TLS证书上的数字签名,然后返回到签名它的中间根。然后,它查看中间层的数字签名,并跟随它返回到签署中间层的证书。以此类推,直到最终到达其信任存储区中的一个根CA证书。如果它做不到这一点,证书链通常是不完整的,这意味着浏览器找不到中间层之一,并且SSL/TLS握手失败。要解决这个问题,您需要找到并安装丢失的中间证书。
  • 过期/吊销的证书:虽然在当前的SSL/TLS生态系统中,撤销操作还有很多需要改进的地方,但在某些上下文中,浏览器将看到证书已被撤销,并且在此基础上握手失败。更常见的情况是由于证书过期。SSL/TLS证书的最大有效期是两年(27个月,因为CAs将允许您从以前的证书中携带最多3个月)。最终,可能会缩短到六个月。这意味着您需要定期交换证书。如果忘记了,这可能就是SSL/TLS握手失败的原因。只要获得一个有效的证书,并安装它-这应该可以解决你的问题。
  • 自签名替换:在内部网络上,自签名证书相当常见。如果你把它们换得足够多,可能会导致问题。大多数浏览器都会缓存证书,这样在返回网站时,握手速度会更快,但是如果您定期生成新证书,不断地将所有新生成的证书添加到本地数据库将导致混乱,最终浏览器将难以构建路径并崩溃。

启用SNI的服务器

这更多的是设备之间存在的内部问题,但有时在未启用SNI时与服务器名称指示服务器通信的客户端可能是SSL/TLS握手失败的原因。首先要做的是确定所讨论的服务器的主机名和端口号,并确保它启用了SNI,并且它可以传递所需的所有信息。再说一次,这通常不是一个公众面临的问题,但它可能是不时的内部原因。

不要奖励糟糕的SSL/TLS实现

很多时候,网站所有者不想做任何改变,直到它产生了一个他们不能忽视的问题。虽然有一些针对SSL/TLS握手失败错误的客户端修复,但通常是服务器端的。这意味着作为一个普通的互联网用户,你的选择是有限的。最好的办法是通知网站所有者问题并等待他们解决。如果他们不这样做,最好停止使用网站。

不要:

  • 放弃防火墙,你通常可以列出一个网站,但不要放弃防火墙。永远。
  • 如果可能的话,不要再次禁用你的防病毒软件,但是要保持更新和开启。
  • 不要通过HTTP连接或单击间隙警告
  • 如果网站不能提供安全的浏览体验,你不应该访问它。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号