迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 网络 >

如何修复“SSL Handshake Failed”错误(5种方法)

作者:迹忆客 最近更新:2021/06/28 浏览次数:

在你的 WordPress 站点上安装安全套接字层 (SSL) 证书使其能够使用 HTTPS 来确保安全连接。不幸的是,在确认有效的 SSL 证书以及在你网站的服务器和访问者的浏览器之间建立连接的过程中,有很多事情可能会出错。

如果遇到“SSL Handshake Failed”错误消息并且对其含义感到困惑,请记住,你不是唯一的一个遇到这个问题的人。这是一个常见的错误,它本身并不能告诉你太多。虽然这可能会令人沮丧,但好消息是你可以采取一些简单的步骤来解决问题。

在这篇文章中,我们将解释 SSL Handshake Failed 错误是什么以及导致它的原因。然后,我们将提供几种可用于修复它的方法。

SSL握手 简介

在我们深入研究导致 TLS 或 SSL 握手失败的原因之前,了解什么是 TLS/SSL 握手会很有帮助。安全套接字层 (SSL)和传输层安全 (TLS)是用于验证服务器和外部系统(如浏览器)之间数据传输的协议。

需要 SSL 证书才能使用 HTTPS保护你的网站。我们不会太深入了解TLS 与 SSL 之间的区别, 因为这是一个次要的区别。这些术语经常互换使用,因此为简单起见,我们将使用“SSL”来指代两者。

顺便说一下,SSL 握手是建立 HTTPS 连接过程的第一步。为了验证和建立连接,用户的浏览器和网站的服务器必须经过一系列检查(握手),这些检查建立了 HTTPS 连接参数。

让我们解释一下:客户端(通常是浏览器)向服务器发送安全连接请求。发送请求后,服务器会向你的计算机发送一个公钥,并根据证书列表检查该密钥。然后计算机生成一个密钥并使用从服务器发送的公钥对其进行加密。

长话短说,如果没有 SSL 握手,就无法建立安全连接。这会带来重大的安全风险。此外,该过程涉及许多活动部件。

这意味着有很多不同的机会出现问题并导致握手失败,甚至导致“你的连接不是私人的”错误,从而导致访问者离开。

了解导致 SSL 握手失败的原因

SSL 握手失败或错误 525 表示服务器和浏览器无法建立安全连接。发生这种情况的原因有多种。

通常,错误 525 表示使用 Cloudflare 的域 和源站 Web 服务器之间的 SSL 握手失败:

GoogleChrome中的错误 525 SSL 握手失败消息

但是,了解 SSL 错误可能发生在客户端或服务器端也很重要。客户端 SSL 错误的常见原因包括:

  • 客户端设备上的日期或时间错误。
  • 浏览器配置错误。
  • 被第三方拦截的连接。

一些服务器端原因包括:

  • 密码套件不匹配。
  • 服务器不支持的客户端使用的协议。
  • 不完整、无效或过期的证书。

通常,如果 SSL 握手失败,则问题可归因于网站或服务器及其 SSL 配置出现问题。

5中方法修复 SSL Handshake Failed 错误

“SSL 握手失败”错误背后有几个潜在原因。因此,当涉及到如何修复它时,没有简单的答案。

幸运的是,你可以使用多种方法来开始发现潜在的问题并一一解决它们。让我们来看看你可以用来尝试修复 SSL Handshake Failed 错误的五种策略。

1. 更新你的系统日期和时间

让我们从一个不太可能的原因开始,但如果是这个问题,则非常容易纠正:你的计算机时钟。

如果你的系统使用了错误的日期和时间,则可能会中断SSL 握手。当系统时钟与实际时间不同时,例如,如果它设置的太远,可能会干扰SSL 证书验证。

你的计算机时钟可能由于人为错误或仅仅是因为你的设置出现故障而设置不正确。不管是什么原因,最好检查并确保你的系统时间正确,如果不正确则更新它。

当然,如果你的时钟显示正确信息,则可以安全地假设这不是“SSL 握手失败”问题的根源。

2. 检查你的 SSL 证书是否有效

到期日期放在 SSL 证书上,以帮助确保其验证信息保持准确。通常,这些证书的有效期为六个月到两年之间。

如果 SSL 证书被吊销或过期,浏览器将检测到这一点并且无法完成 SSL 握手。如果你在网站上安装 SSL 证书已超过一年左右,则可能是时候重新颁发它了。

要查看 SSL 证书的状态,你可以使用SSL 证书检查器工具, 例如 Qualys 提供的工具:

Qualys 网站上的 SSL 服务器测试工具

该工具既可靠又免费。你需要做的就是在主机名字段中输入你的域名 ,然后单击提交。检查器完成对你站点的 SSL 配置的分析后,它会向你显示一些结果:

Qualys SSL 检查工具的结果页面

在此页面上,你可以查看你的证书是否仍然有效,并查看它是否因某些原因被吊销。

在任何一种情况下,更新你的 SSL 证书都应该能解决Handshake Failed错误。

3. 配置你的浏览器以获得最新的 SSL/TLS 协议支持

有时,确定问题根本原因的最佳方法是通过消除过程。正如我们之前提到的,SSL Handshake Failed 通常是由于浏览器配置错误造成的。

确定特定浏览器是否有问题的最快方法是尝试切换到不同的浏览器。这至少可以帮助缩小问题的范围。你也可以尝试禁用任何插件并将浏览器重置为其默认设置。

另一个潜在的浏览器相关问题是协议不匹配。例如,如果服务器仅支持 TLS 1.2,但浏览器仅配置为 TLS 1.0 或 TLS 1.1,则没有相互支持的协议可用。这将不可避免地导致 SSL 握手失败。

根据你使用的浏览器,你如何检查以查看是否发生了此问题。作为一个例子,我们将看看这个过程在 Chrome 中是如何工作的。首先,打开浏览器并转到Settings > Advanced。这将扩展许多菜单选项。

在“系统” 部分下,单击“打开计算机的代理设置”:

Google Chrome 中的系统设置页面

这将打开一个新窗口。接下来,选择高级 选项卡。在安全 部分下,检查是否选中了使用 TLS 1.2旁边的框 。如果没有,请检查该选项:

Windows 中的 Internet 属性高级设置

还建议你取消选中 SSL 2.0 和 SSL 3.0 的复选框。

这同样适用于 TLS 1.0 和 TLS 1.1,因为它们正在逐步淘汰。完成后,单击“确定” 按钮,然后检查握手错误是否已解决。

请注意,如果你使用 Apple Safari 或 Mac OS,则没有启用或禁用 SSL 协议的选项。默认情况下会自动启用 TLS 1.2。如果你使用的是 Linux,你可以参考Red Hat guide on TLS hardening

4. 验证你的服务器是否正确配置为支持 SNI

SSL 握手失败也可能是由不正确的服务器名称指示 (SNI) 配置引起的。SNI 使 Web 服务器能够为一个 IP 地址安全地托管多个 TLS 证书。

服务器上的每个网站都有自己的证书。但是,如果服务器未启用 SNI,则可能导致 SSL 握手失败,因为服务器可能不知道要提供哪个证书。

有几种方法可以检查站点是否需要 SNI。一种选择是使用 Qualys 的 SSL 服务器测试,我们在上一节中讨论过。输入你站点的域名,然后单击“提交”按钮。

在结果页面上,查找显示“此站点仅适用于支持 SNI 的浏览器”的消息:

Qualys SSL 检查器工具的摘要结果页面

另一种检测服务器是否使用 SNI 的方法是浏览“ClientHello”消息中的服务器名称。这是一个更具技术性的过程,但它可以提供很多信息。

它涉及检查“server_name”字段的扩展 hello 标头,以查看是否提供了正确的认证。

如果你熟悉使用OpenSSL 工具包 和Wireshark等工具,你可能会发现这种方法更可取。你可以使用openssl s_client和不使用-servername选项:

# without SNI$ openssl s_client -connect host:port# use SNI$ openssl s_client -connect host:port -servername host

如果你获得两个同名的不同证书,则表示支持并正确配置了 SNI。

但是,如果返回的证书中的输出不同,或者没有SNI的调用无法建立SSL连接,则表明需要SNI但没有正确配置。解决此问题可能需要切换到专用 IP 地址。

5. 确保密码套件匹配

如果你仍然无法确定 SSL 握手失败的原因,则可能是由于cipher suite mismatch。如果你不熟悉该术语,“密码套件”是指一组算法,包括用于密钥交换、批量加密和消息身份验证代码的算法,可用于保护 SSL 和 TLS 网络连接。

如果服务器使用的密码套件不支持或不匹配 Cloudflare 使用的密码套件,则可能会导致“SSL 握手失败”错误。

在确定是否存在密码套件不匹配时,Qualys 的 SSL 服务器测试再次证明是一个有用的工具。

当你输入你的域并单击Submit 时,你将看到一个摘要分析页面。你可以在Cipher Suites 部分下找到密码信息:

Qualys SSL 报告中的密码套件部分

你可以使用此页面来发现服务器支持哪些密码和协议。你需要注意任何显示“弱”状态的内容。此外,本节还详细介绍了密码套件的具体算法。

要更正此问题,你可以使用浏览器 工具的Qualys SSL/TLS 功能将结果与浏览器支持的结果进行比较。有关密码套件的更多信息和指南,我们还建议你查看ComodoSSLStore 指南。

总结

SSL 相关问题中最令人困惑但最常见的类型之一是“SSL Handshake Failed”错误。处理此错误可能会有压力,因为它有许多潜在原因,包括客户端和服务器端问题。

但是,你可以使用一些可靠的解决方案来识别问题并解决它。你可以使用以下五种方法来修复 SSL 握手失败错误:

  1. 更新你的系统日期和时间。
  2. 检查你的 SSL 证书是否有效(并在必要时重新颁发)。
  3. 配置你的浏览器以支持最新的 TLS/SSL 版本。
  4. 验证你的服务器是否正确配置为支持 SNI。
  5. 确保密码套件匹配。

除非注明转载,本站文章均为原创或翻译,欢迎转载,转载请以链接形式注明出处

本文地址:

迹忆客

专注技术分享,项目实战分享!

技术宅 乐于分享 7年编程经验
社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

热门文章

教程更新

热门标签