如今为网站设置安全套接字层 (SSL) 证书非常简单。您可以免费生成证书,许多托管服务提供商甚至会为您设置。但是,如果您没有正确配置您的证书,您可能会遇到诸如“SSL握手失败”之类的错误。
如果您遇到“SSL握手失败”错误消息并且对它的含义感到困惑,那么您并不孤单。这是一个常见的错误,它本身并不能告诉你太多。虽然这可能是令人沮丧的体验,但好消息是您可以采取一些简单的步骤来解决问题。
当您的浏览器和服务器无法建立安全连接时,会出现“SSL握手失败”错误。
在这篇文章中,我们将解释什么是SSL Handshake Failed错误以及导致它的原因。然后,我们将为您提供几种可用于修复它的方法。
- SSL握手简介
- 了解导致SSL握手失败的原因
- 如何修复SSL握手失败错误
在我们深入研究导致TLS或SSL握手失败的原因之前,了解什么是TLS/SSL握手会很有帮助。安全套接字层 (SSL)和传输层安全性 (TLS)是用于验证服务器和外部系统(如浏览器)之间的数据传输的协议。
需要SSL证书才能使用HTTPS保护您的网站。我们不会太深入地讨论TLS与SSL之间的区别, 因为它是次要的。这些术语经常互换使用,因此为简单起见,我们将使用“SSL”来指代两者。
除此之外,SSL握手是建立HTTPS连接过程的第一步。为了验证和建立连接,用户的浏览器和网站的服务器必须经过一系列检查(握手),从而建立HTTPS连接参数。
让我们解释一下:客户端(通常是浏览器)向服务器发送安全连接请求。发送请求后,服务器会向您的计算机发送一个公钥,并根据证书列表检查该密钥。然后,计算机使用从服务器发送的公钥生成密钥并对其进行加密。
长话短说,没有SSL握手,就不会建立安全连接。这会带来重大的安全风险。此外,该过程涉及许多活动部件。
这意味着有很多不同的机会出现问题并导致握手失败,甚至导致“您的连接不是私密连接”错误,从而导致访问者离开。
您可能知道,SSL证书可以验证您网站的“身份”。它使用浏览器检查的加密密钥来确保证书有效。建立连接后,您的浏览器可以解密服务器发送的内容。
这个过程称为“握手”。以下是它更详细的工作原理:
- 您访问具有SSL证书的网站,并且您的浏览器发送数据请求。
- 服务器向浏览器发送一个加密的公钥。
- 您的浏览器检查该密钥并将其加密密钥发送回服务器。
- 服务器解密密钥并将加密内容发送回您的浏览器。
- 您的浏览器解密内容(从而完成握手)。
所有这一切都在几秒钟内发生。SSL证书和HTTPS协议使您的网站能够安全地传输数据,而不会对性能产生负面影响。这使得SSL证书对任何网站都至关重要。但是,就像您网站的任何元素一样,它有时会产生独特的问题。
SSL握手失败或错误525意味着服务器和浏览器无法建立安全连接。这可能由于多种原因而发生。
通常,错误525表示使用Cloudflare的域与源Web服务器之间的SSL握手失败。
“SSL握手失败”错误准确地告诉您问题是什么。当您的浏览器无法与具有SSL证书的网站建立连接时,它会显示:
在这个来自使用Cloudflare的网站的示例中,您可以看到“SSL握手失败”错误对应于“525”代码。因此,错误可能源于服务器端和客户端的问题。
但是,了解SSL错误可能发生在客户端或服务器端也很重要。客户端SSL错误的常见原因包括:
- 客户端设备上的错误日期或时间。
- 浏览器配置错误。
- 被第三方拦截的连接。
一些服务器端原因包括:
- 密码套件不匹配。
- 服务器不支持的客户端使用的协议。
- 不完整、无效或过期的证书。
通常,如果SSL握手失败,问题可能是由于网站或服务器及其SSL配置有问题。
该列表包括本地问题,与您网站的服务器相关问题,一个特定于第三方服务的问题。在接下来的部分中,我们将探讨如何解决每个问题。
“SSL握手失败”错误背后有几个潜在原因。因此,当涉及到如何修复它时,没有简单的答案。
幸运的是,您可以使用一些方法来开始探索潜在问题并一一解决。让我们看一下可用于尝试修复SSL Handshake Failed错误的五种策略。
- 更新您的系统日期和时间
- 检查您的SSL证书是否有效
- 为您的浏览器配置最新的SSL/TLS协议支持
- 验证您的服务器是否已正确配置为支持SNI
- 确保密码套件匹配
当您的浏览器尝试建立SSL握手时,它会根据您计算机的日期和时间验证证书。它这样做是为了验证SSL证书是否仍然有效。
如果您本地设备的日期和时间关闭,则可能会导致验证过程中出现错误(即没有握手)。幸运的是,这是一个简单修复的问题。
在Windows设备上,打开开始 菜单并输入日期和时间设置。选择出现的选项,会弹出一个新窗口。启用设置自动设置时间,并确保您的时区正确:
验证您的日期现在是否正确,然后尝试重新加载网站。
以下是在其他操作系统 (OS) 上修复日期和时间的方法:
- 苹果系统
- IOS
- 安卓
如果在本地设备上修复日期和时间不起作用,您可以继续进行下一个修复。
SSL证书上标有到期日期,以帮助确保其验证信息保持准确。通常,这些证书的有效期为六个月至两年。
如果SSL证书被吊销或过期,浏览器将检测到这一点并且无法完成SSL握手。如果您在网站上安装SSL证书已经超过一年左右,那么可能是时候重新颁发它了。
要查看SSL证书的状态,您可以使用SSL证书检查工具 ,例如Qualys提供的工具:
Qualys网站上的SSL服务器测试工具
该工具既可靠又免费使用。您需要做的就是在Hostname字段中输入您的域名 ,然后单击Submit。一旦检查器完成对您网站的SSL配置的分析,它将为您提供一些结果:
Qualys SSL检查工具的结果页面
在此页面上,您可以查看您的证书是否仍然有效,并查看它是否因任何原因被吊销。
在任何一种情况下,更新您的SSL证书都应该可以解决握手错误(这对于确保您的网站和WooCommerce商店的安全至关重要)。
有时,确定问题根本原因的最佳方法是消除过程。正如我们前面提到的,SSL握手失败通常是由于浏览器配置错误而发生的。
确定特定浏览器是否存在问题的最快方法是尝试切换到其他浏览器。这至少可以帮助缩小问题范围。您也可以尝试禁用任何插件并将浏览器重置为默认设置。
另一个潜在的与浏览器相关的问题是协议不匹配。例如,如果服务器仅支持TLS 1.2,但浏览器仅配置为TLS 1.0或TLS 1.1,则没有相互支持的协议可用。这将不可避免地导致SSL握手失败。
如何检查此问题是否发生取决于您使用的浏览器。作为一个例子,我们将看看这个过程在Chrome中是如何工作的。首先,打开浏览器并转到设置 > 高级。这将扩展许多菜单选项。
在“系统 ”部分下,单击“打开计算机的代理设置”:
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。
SSL 握手失败也可能是由不正确的服务器名称指示 (SNI) 配置引起的。SNI使Web服务器能够为一个IP地址安全地托管多个TLS证书。
服务器上的每个网站都有自己的证书。但是,如果服务器未启用SNI,则可能导致SSL握手失败,因为服务器可能不知道要提供哪个证书。
有几种方法可以检查网站是否需要SNI。一种选择是使用我们在上一节中讨论过的Qualys的SSL服务器测试。输入您网站的域名,然后单击提交按钮。
在结果页面上,查找显示“This site works only in browsers with SNI support”的消息:
Qualys SSL检查器工具的摘要结果页面
另一种检测服务器是否使用SNI的方法是浏览“ClientHello”消息中的服务器名称。这是一个技术性更强的过程,但它可以提供很多信息。
它涉及检查“server_name”字段的扩展hello标头,以查看是否提供了正确的证书。
如果您熟悉使用OpenSSL工具包 和Wireshark等工具,您可能会发现此方法更可取。您可以使用或不使用该选项:
如果您获得了两个同名的不同证书,则意味着SNI受支持且配置正确。
但是,如果返回的证书中的输出不同,或者没有SNI的调用无法建立SSL连接,则表明需要SNI但未正确配置。解决此问题可能需要切换到专用IP地址。
如果您仍然无法确定SSL握手失败的原因,则可能是由于密码套件不匹配。如果您不熟悉该术语,“密码套件”是指一组算法,包括用于密钥交换、批量加密和消息身份验证代码的算法,可用于保护SSL和TLS网络连接。
如果服务器使用的密码套件不支持或不匹配Cloudflare使用的密码套件,则可能导致“SSL握手失败”错误。
在确定是否存在密码套件不匹配时,Qualys的SSL服务器测试再次证明是一个有用的工具。
当您输入您的域并单击提交时,您将看到一个摘要分析页面。您可以在“Cipher Suites ”部分下找到密码信息:
Qualys SSL报告中的密码套件部分
您可以使用此页面来发现服务器支持的密码和协议。您需要注意任何显示“弱”状态的内容。此外,本节还详细介绍了密码套件的具体算法。
要更正此问题,您可以使用您的浏览器工具的Qualys SSL/TLS功能将结果与您的浏览器支持的内容进行比较。有关密码套件的更多信息和指导,我们还建议查看ComodoSSLStore指南。
最令人困惑但最常见的SSL相关问题类型之一是“SSL握手失败”错误。处理此错误可能会带来压力,因为它有许多潜在原因,包括客户端和服务器端问题。