什么是 SSL 握手以及如何修复 SSL 握手失败?

发布时间:2021-11-08 10:53:15

当网络上的设备(例如浏览器和 Web 服务器)在最终同意交换数据之前共享加密算法、密钥和其他有关其连接的详细信息时,这称为 SSL 握手。在此握手期间,浏览器和服务器可能会要求查看彼此的SSL 证书以对其进行验证。

此握手对于在传输数据之前建立安全连接至关重要,因此了解 SSL 握手是什么以及如果失败该怎么办很重要。

SSL 握手是客户端和服务器建立加密算法和密钥的过程,它们将用于安全地相互通信,并交换和验证彼此的数字证书。

注意:SSL和 TLS 都是加密协议,它们使通过网络运行的客户端和服务器能够安全地相互通信。TLS 已经取代了 SSL,但 SSL 仍然是一个更常用的术语,因此我们将在本文中继续使用它。

SSL 握手.png

SSL 握手步骤

SSL 握手的具体步骤取决于客户端和服务器决定使用的 SSL 版本,但一般过程概述如下。

客户打招呼。此“客户端问候”消息列出了加密信息,包括用于相互通信的 SSL 版本。它还列出了它支持的加密算法,称为密码套件。

服务器响应你好。此“服务器问候”消息包含重要信息,例如它选择的 CipherSuite 及其数字证书。它还可能请求客户端的证书。

客户端验证服务器的证书。它还发送几个字节字符串,其中一个用于允许客户端和服务器计算用于加密后续消息(包括“已完成”消息)的密钥。如果服务器发送客户端证书请求,它也会发送一个用自己的私钥和数字证书加密的字节串。

服务器验证客户端的证书。仅当需要客户端身份验证时才会执行此步骤。

客户说:“我已经完成了。”此“完成”消息表示客户端已完成其部分握手。

服务员说“我也吃完了。”这个“finished”消息表明服务器已经完成了它的握手部分。

对于会话的剩余部分,服务器和客户端现在可以交换使用相同密钥加密的消息,该密钥在第三步中共享。这称为对称加密。您可以在这篇博文中了解有关对称加密的更多信息,以及它与非对称加密的区别。

如果过程顺利,就会出现上述步骤。但如果没有呢?下面我们将介绍如何解决“SSL 握手失败”错误消息。

什么是 SSL 握手失败?

SSL 握手失败是当客户端或服务器无法建立安全连接时出现的错误消息。

在以下情况下可能会发生这种情况

客户端使用了错误的日期或时间。

客户端是浏览器,其特定配置导致错误。

连接被客户端的第三方拦截。

客户端和服务器不支持相同的 SSL 版本。

客户端和服务器使用不同的密码套件。

客户端或服务器的证书无效。

SSL Handshake Failed 错误消息的显示方式可能有所不同,具体取决于您使用的客户端应用程序或您尝试与之通信的服务器。

另一方面,如果您使用 Cloudflare,则 SSL 握手失败将显示为 525 错误。

现在您知道了 SSL Handshake Failed 错误的一些原因,让我们看看一些解决方案。

如何修复 SSL 握手失败

1. 更正客户端设备上的时间和日期。

让我们从最简单的修复开始。如果您的计算机或设备上的系统时间和日期不正确,则可能导致 SSL 握手失败错误。那是因为时间对于 SSL 证书来说至关重要:它们的生命周期是有限的,并且在过期日期之后失效。

如果您检查系统时间和日期并且它是正确的,则继续下一步。

2. 尝试其他浏览器。

您使用的浏览器可能导致 SSL Handshake Failed 错误。这可能是您的设置、浏览器插件或其他问题。要查看这是否是问题所在,只需切换到其他浏览器即可。

假设您尝试使用 Google Chrome 连接到一个网站,它在 Safari 中运行良好。在这种情况下,您必须缩小问题的范围。返回并将 Google Chrome(或您使用的任何浏览器)重置为其默认设置并禁用所有插件。然后重新配置您的设置并逐一启用您的插件,测试您每次连接到网站的能力。您应该能够以这种方式隔离导致 SSL 握手失败的特定设置或插件。

如果您尝试使用其他浏览器,但仍然看到 SSL Handshake Failed 错误,请继续执行下一步。

3. 将网站添加到许可名单。

您的防火墙也有可能通过拦截您的检查请求而导致 SSL 握手失败错误。为了排除它的原因,您可以暂时停用您的防火墙——但这可能会使您容易受到攻击。

相反,请尝试将该网站添加到您的许可名单。这是谷歌浏览器的过程:

在您的管理控制台主页上,转到设备 > Chrome。

单击设置>用户和浏览器。

保持选中顶级单位部门(默认情况下已选中)。这会将设置应用于所有用户和注册的浏览器。

滚动到 URL Blocking 并在Blocked URL exceptions下输入您尝试访问的网站。

点击保存。

如果您再次尝试访问该站点,但仍然看到 SSL Handshake Failed 错误,请继续执行下一步。

4. 更新浏览器以使用最新的 SSL 协议。

您可能会收到 SSL Handshake Failed 错误,因为您的设备(客户端)和服务器不支持相同的 SSL 版本,这会导致协议不匹配。例如,假设您的浏览器仅支持 TLS 1.1,而您的服务器仅支持 TLS 1.2 或 1.3(最新版本)。如果这两个尝试建立安全连接,则可能会导致 SSL Handshake Failed 错误。

在这种情况下,您需要更新浏览器。大多数更新版本的主要浏览器(如 Google Chrome)都自动启用了 TLS 1.2。但是,即使它已更新,确保将其配置为支持最新的 TLS 版本也很重要。

以下是最简单的检查方法:

访问SSL 实验室。

导航到项目。

单击SSL 客户端测试。

在协议支持下,它会告诉您您的浏览器是否支持最新版本的 TLS。

如果您确认浏览器和服务器使用相同的协议,请继续下一步。

5. 检查浏览器和服务器对密码套件的支持。

您可能会收到 SSL Handshake Failed 错误的另一个原因是客户端和服务器使用不同的密码套件。就像协议不匹配一样,对同一个 CipherSuite 没有相互支持的客户端和服务器将无法建立安全连接。

您可以通过再次访问SSL Labs来比较您的浏览器支持的密码套件与您尝试访问的网站的服务器支持的密码套件。

首先,导航到Projects。

单击SSL 客户端测试。

向下滚动到协议功能,它将按偏好顺序列出您的浏览器支持的密码套件。

现在,在另一个选项卡中打开 SSL Labs,然后导航到Projects。

单击SSL 服务器测试。

输入您尝试访问的导致 SSL 握手失败错误的域名

向下滚动到配置,它将按优先顺序列出服务器支持的密码套件。

如果您确认您的浏览器和服务器使用相同的 CipherSuite,则继续下一步。

6. 验证您的 SSL 证书是否准确有效。

SSL 证书上的任意数量的问题都会阻止 SSL 握手完成。这可能会导致 SSL 握手失败错误或其他最终意味着握手失败的错误消息。例如,您可能会看到如下内容:

例如,如果 SSL 证书的主机名不正确,或者它已超过其到期日期,则握手可能会失败。因此,确保您的 SSL 证书正确安装并在需要时更新非常重要。

您可以使用上述SSL Server Test或SSL Shopper等在线工具在几分钟内测试您的 SSL 配置是否已安装、有效和受信任。

当客户端和服务器不想握手时

由于 SSL 握手是确保通过 Internet 传输的数据安全的重要步骤,因此用户必须了解 SSL 握手失败错误的含义以及如何修复它。通过执行上述步骤,您应该能够解决问题并在您的设备和您尝试连接的服务器之间建立安全连接。

声明:本站发布的内容以原创、转载、分享网络内容为主,如有侵权,请联系电话:400-887-2127,邮箱:7221960@qq.com ,我们将会在第一时间删除。文章观点不代表本站立场,如需处理请联系我们。