如何修复“ssl handshake failed”错误(5种方法)
在你的 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 握手失败:
但是,了解 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 提供的工具:
该工具既可靠又免费。你需要做的就是在主机名字段中输入你的域名 ,然后单击提交。检查器完成对你站点的 ssl 配置的分析后,它会向你显示一些结果:
在此页面上,你可以查看你的证书是否仍然有效,并查看它是否因某些原因被吊销。
在任何一种情况下,更新你的 ssl 证书都应该能解决handshake failed
错误。
3. 配置你的浏览器以获得最新的 ssl/tls 协议支持
有时,确定问题根本原因的最佳方法是通过消除过程。正如我们之前提到的,ssl handshake failed 通常是由于浏览器配置错误造成的。
确定特定浏览器是否有问题的最快方法是尝试切换到不同的浏览器。这至少可以帮助缩小问题的范围。你也可以尝试禁用任何插件并将浏览器重置为其默认设置。
另一个潜在的浏览器相关问题是协议不匹配。例如,如果服务器仅支持 tls 1.2,但浏览器仅配置为 tls 1.0 或 tls 1.1,则没有相互支持的协议可用。这将不可避免地导致 ssl 握手失败。
根据你使用的浏览器,你如何检查以查看是否发生了此问题。作为一个例子,我们将看看这个过程在 chrome 中是如何工作的。首先,打开浏览器并转到settings > advanced
。这将扩展许多菜单选项。
在“系统” 部分下,单击“打开计算机的代理设置”:
这将打开一个新窗口。接下来,选择高级 选项卡。在安全 部分下,检查是否选中了使用 tls 1.2旁边的框 。如果没有,请检查该选项:
还建议你取消选中 ssl 2.0 和 ssl 3.0 的复选框。
这同样适用于 tls 1.0 和 tls 1.1,因为它们正在逐步淘汰。完成后,单击“确定” 按钮,然后检查握手错误是否已解决。
请注意,如果你使用 apple safari 或 mac os,则没有启用或禁用 ssl 协议的选项。默认情况下会自动启用 tls 1.2。如果你使用的是 linux,你可以参考。
4. 验证你的服务器是否正确配置为支持 sni
ssl 握手失败也可能是由不正确的服务器名称指示 (sni) 配置引起的。sni 使 web 服务器能够为一个 ip 地址安全地托管多个 tls 证书。
服务器上的每个网站都有自己的证书。但是,如果服务器未启用 sni,则可能导致 ssl 握手失败,因为服务器可能不知道要提供哪个证书。
有几种方法可以检查站点是否需要 sni。一种选择是使用 qualys 的 ssl 服务器测试,我们在上一节中讨论过。输入你站点的域名,然后单击“提交”按钮。
在结果页面上,查找显示“此站点仅适用于支持 sni 的浏览器”的消息:
另一种检测服务器是否使用 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/tls 功能将结果与浏览器支持的结果进行比较。有关密码套件的更多信息和指南,我们还建议你查看comodosslstore 指南。
总结
ssl 相关问题中最令人困惑但最常见的类型之一是“ssl handshake failed”错误。处理此错误可能会有压力,因为它有许多潜在原因,包括客户端和服务器端问题。
但是,你可以使用一些可靠的ag捕鱼王app官网的解决方案来识别问题并解决它。你可以使用以下五种方法来修复 ssl 握手失败错误:
- 更新你的系统日期和时间。
- 检查你的 ssl 证书是否有效(并在必要时重新颁发)。
- 配置你的浏览器以支持最新的 tls/ssl 版本。
- 验证你的服务器是否正确配置为支持 sni。
- 确保密码套件匹配。
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
在 python 中导入 openssl
发布时间:2023/12/20 浏览次数:200 分类:python
-
本教程演示了如何在 python 中使用 openssl。我们旨在学习如何在 python 中使用 openssl。安装 openssl python 库
使用 java 创建 https 服务器
发布时间:2023/08/10 浏览次数:282 分类:java
-
本文介绍如何使用 java 创建简单的 https 服务器。使用 java 创建 https 服务器 在用java创建https服务器之前,我们必须确保已经生成了服务器将使用的keystore和truststore。
java 禁用 ssl 验证
发布时间:2023/07/21 浏览次数:256 分类:java
-
本文将展示如何在创建 http 连接时禁用此证书验证。 此外,我们将编写一个示例代码,并提供有关该主题的解释,以使其易于理解。java 禁用 ssl 验证
限制 java ssl 调试日志记录
发布时间:2023/07/21 浏览次数:228 分类:java
-
通过本文我们将了解 java ssl 调试、其重要性、各种实用程序以及如何在单个命令中使用一个或多个实用程序。java ssl 调试及其重要性
在 java 中使用 fiddler 捕获 https 流量
发布时间:2023/07/17 浏览次数:97 分类:java
-
fiddler是一个web调试代理工具,可以帮助开发人员调试web应用程序。 它允许捕获网络流量并监控传入和传出的数据。本文将教我们设置fiddler来捕获https流量。
java 中错误 the superclass javax.servlet.http.httpservlet was not found on the
发布时间:2023/07/14 浏览次数:106 分类:java
-
本篇文章介绍如何解决在 java 中的 javax.servlet.http.httpservlet" was not found on the java build path 的问题。java 中 javax.servlet.http.httpservlet" was not found on the java build path 当我们在 eclipse 中编写第一个 jsp 代码
修复 错误 javax.net.ssl.sslhandshakeexception
发布时间:2023/07/12 浏览次数:564 分类:java
-
本篇文章介绍了 java 中的 javax.net.ssl.sslhandshakeexception 错误。java 中的 ssl 握手 ssl 握手用于客户端和服务器建立安全连接所需的信任和后勤保障。
修复 python 中 ssl: certificate_verify_failed 错误
发布时间:2023/07/05 浏览次数:367 分类:python
-
本文介绍了您在将 ssl 与网站或应用程序连接期间可能遇到的 ssl: certificate_verify_failed 错误的详细信息。
修复 python 中错误 attributeerror: 'module' object has no attribute 'ssl_st_
发布时间:2023/07/05 浏览次数:397 分类:python
-
在 python 中使用 ssl 模块时,会引发 attributeerror: 'module' object has no attribute 'ssl_st_init' 错误,因为 ssl 模块在 python 标准库中不可用。要解决此问题,您必须安装 openssl-devel 软件包。