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