什么是SSL握手失败?
无漏洞抓取浏览器在受管云浏览器中运行浏览器会话,以满足需要浏览器原生TLS和渲染页面行为的公共网络工作流程。
简而言之
- 什么是SSL握手失败有一个精确的技术边界。 失败可以是本地或远程的。客户端可能会拒绝服务器证书,服务器可能会拒绝客户端的协议报价或证书,负载均衡器可能会为主机名出示错误的证书,或者检查代理可能会改变信任路径。应用请求通常不会到达HTTP处理程序。
- 不兼容的TLS版本是一个常见原因。 旧客户端可能只能提供已禁用的版本,或者服务器可能被限制为客户端不支持的版本。安全的修复方法是更新过时的对等体,而不是随便恢复过时的协议。
- 术语会改变安全的下一步。 SSL握手是常用的说法,但生产HTTPS连接使用TLS;诊断应命名协商的TLS版本,并在可用时发出警报。
- 检查设备时钟。 日期、时间和时区必须正确,以便进行证书有效性检查。
- 浏览器自动化中的TLS故障需要明确分类。 仅使用公共或授权目标,并将会话凭据保留在日志之外。受管浏览器可以标准化客户端,但不会改变目标的权限模型或使无效证书变得可信。
加密无法在两个对等方达成一致之前开始
SSL握手失败意味着客户端和服务器未能完成在HTTPS应用数据流动之前所需的协商。现代协议是TLS,但浏览器消息、库和服务器日志仍然使用SSL作为熟悉的标签。
握手选择协议参数,建立共享密钥,使用证书对服务器进行身份验证,并可能对客户端进行身份验证。这些阶段中的任何一个失败都可能产生一个通用消息,即使修复措施不同。更改证书不会解决协议不匹配的问题,启用旧协议可能会削弱安全性而不解决丢失的证书链。
诊断应使用真实主机名重现连接,观察警报和证书链,比较其他当前客户端,并检查服务器端TLS日志。目标是确定在更改加密策略之前,未能达到预期的第一个握手消息。
SSL握手失败的直接含义
SSL握手失败发生在TLS对等方无法完成经过身份验证的密钥建立并就加密会话所需的参数达成一致时。 RFC 8446 将TLS 1.3握手定义为输出会话密钥、协商参数和对等体身份的经过身份验证的密钥交换。
失败可以是本地或远程的。客户端可能会拒绝服务器证书,服务器可能会拒绝客户端的协议报价或证书,负载均衡器可能会为主机名出示错误的证书,或者检查代理可能会改变信任路径。应用请求通常不会到达HTTP处理程序。
TLS握手可能停止的地方
客户端以携带支持版本、加密选项、扩展和请求服务器名称的ClientHello开始。服务器选择兼容参数并返回其ServerHello。如果没有可接受的版本或算法,协商可能会在此结束。
然后服务器使用证书链和证明其持有相应私钥的方式进行身份验证。客户端验证链、主机名、有效期、签名策略和信任锚。缺失的中间证书或错误的主机名可能会在HTTP开始之前停止连接。
某些服务要求客户端证书。服务器请求它,客户端必须提供合适的证书并证明私钥的所有权。最后,两个对等方验证握手记录并推导出流量密钥。接近这些阶段的警报将原因缩小到协商、服务器身份、客户端身份或完整性。
| 握手阶段 | 预期结果 | 失败线索 |
|---|---|---|
| ClientHello | 提供的支持版本和选项 | 没有共享协议、算法或所需扩展 |
| 服务器身份 | 主机名的正确证书链 | 未知的颁发者、错误的名称、过期的证书 |
| 客户端身份 | 在需要时接受的客户端证书 | 缺失或不受信任的客户端证书 |
| 完成消息 | 两个对等方验证记录 | 密钥、签名或中介损坏 |
常见的SSL握手失败原因
最有用的类别是兼容性、服务器身份、主机名路由、客户端身份验证和拦截。
没有兼容的TLS版本
旧客户端可能只能提供已禁用的版本,或者服务器可能被限制为客户端不支持的版本。安全的修复方法是更新过时的对等体,而不是随便恢复过时的协议。
没有可接受的加密算法
客户端和服务器策略可能没有共享的密码套件或签名算法。比较配置的集合和现代平台的默认设置。
不完整或无效的证书链
服务器可以省略中间证书,提供过期的证书,或使用客户端无法构建到可信根的链。
错误的主机名证书
负载均衡器或虚拟主机在缺失或配置错误的SNI路由时可以选择默认证书。该证书随后指向另一个站点。
客户端证书被拒绝
当客户端不发送证书、发送错误的证书、信任不了的颁发者,或使用没有必要用途的证书时,双向TLS可能会失败。
检查代理或时钟问题
TLS检查会更改呈现的链,而不正确的设备时钟可能会使有效证书看起来超出有效窗口。
找到第一个破损的握手阶段
使用确切的主机名进行重现,并在更改协议或信任设置之前从两个对等方捕获证据。
- 记录确切的客户端错误和服务器警报。 通用浏览器用词不如库代码、TLS警报和服务器日志在相同时刻有用。
- 使用真实的主机名。 启用SNI和主机名验证进行测试;仅通过IP连接可能会选择不同的虚拟主机和证书。
- 检查呈现的链。 确认叶证书、中间顺序、主机名、有效期、颁发者、签名以及链是否到达可信根。
- 比较当前客户端。 如果现代浏览器工作但旧运行时失败,请比较支持的TLS版本、签名算法和信任库。
- 检查服务器选择。 验证负载均衡器、入口和虚拟主机是否选择了请求名称的预期证书和TLS策略。
- 审查客户端证书政策。 对于双向TLS,检查请求的颁发者、客户端证书用途、链和私钥访问。
- 通过获准的检查进行比较。 与网络管理员一起确定企业代理或安全产品是否更改了证书或握手路径。
在中的握手模型 TLS 1.3规范中,Chrome的安全连接指导 Chrome安全连接帮助中,以及Mozilla的证书错误分类法 Mozilla证书错误指导 帮助将协商与信任失败分开。
用户安全检查
TLS故障保护连接,因此响应应保留该保护,同时隔离本地条件。
- 检查设备时钟。 日期、时间和时区必须正确以进行证书有效性检查。
- 更新浏览器和操作系统。 当前客户端支持现代协议和信任库更新。
- 比较另一个受信任的网络。 强制门户、VPN或检查代理可能会改变握手和呈现的证书。
- 不要安装未知的根证书。 在信任之前,与管理员确认任何工作场所或学校的证书。
服务器端TLS修复
运营商应修复失败阶段,同时保持现代协议和证书策略不变。
提供完整的预期证书链,将其绑定到正确的主机名,并确认私钥访问。测试每个边缘区域和负载均衡监听器,因为一个过时的节点可能会呈现与其余集群不同的身份。
保持支持的现代客户端和服务器算法的故意重叠。当旧运行时失败时,清点其真正的业务需求并进行升级。恢复过时的协议或弱算法以实现广泛兼容性会增加曝光,可能会违反平台政策。
对于互信TLS,发布接受的客户端发行者和使用要求,监控拒绝原因,并用重叠旋转客户端证书。将握手度量与HTTP度量分开,因为失败的TLS会话永远不会到达应用程序路由。
握手失败与证书错误
证书验证是一个握手阶段,但许多握手失败发生在证书信任之前或之外。
| 症状 | 主要层 | 诊断重点 |
|---|---|---|
| SSL握手失败 | TLS协商未完成 | 协议、算法、SNI、证书、客户端认证 |
| 证书错误 | 提供的身份未通过验证 | 链、主机名、时间、发行者、撤销 |
| HTTP 5xx | TLS已完成,服务器返回HTTP | 应用程序或上游服务 |
| TCP重置 | 传输突然结束 | 终端或中介网络路径 |
浏览器自动化中的TLS失败
该 无抓取抓取浏览器 使用浏览器环境进行公共网络检索,这与浏览器的工作流程对齐TLS和呈现行为。作业仍应记录目标主机名、连接阶段、浏览器错误和最终页面验证。
不要禁用证书验证以使自动化看起来成功。这会移除服务器身份保证并可能暴露凭据或收集的数据。如果目标有真正的证书缺陷,将作业分类为安全连接失败并联系网站所有者。
仅使用公共或授权目标,并将会话凭据排除在日志之外。受管理的浏览器可以标准化客户端,但不会更改目标的权限模型或使无效证书变得可信。
诊断握手阶段,而不是通用标签
SSL握手失败意味着TLS协商在建立安全应用程序会话之前结束。协议兼容性、加密政策、SNI路由、服务器证书、客户端证书和检查可以分别阻止不同的阶段。
用确切的主机名重现,检查警报和链,比较当前客户端,并关联服务器日志。在保持证书验证和现代协议政策启用的同时修复该阶段。
准备好使安全连接失败更容易诊断了吗?
在安全页面失败到达下游数据之前捕获握手边界、证书证据、最终URL和呈现的内容。
今天注册并获得 $5的免费信用 — 无需信用卡.
索取您的$5信用→常见问题
SSL握手失败与证书错误一样吗?
证书错误是SSL握手失败的一个可能原因,但协商也可能由于TLS版本、加密算法、SNI、客户端证书或完整性问题而失败。
错误的系统时间会导致握手失败吗?
不正确的时钟会使证书显示过期或尚未有效,从而导致证书验证和握手停止。在更深入的更改之前,正确设置日期、时间和时区。
启用较旧的TLS版本来修复错误吗?
不要广泛启用过时的TLS版本作为快速修复。识别过时的对等方并更新它,然后保持服务器在一个故意的现代兼容政策中。
SNI如何导致握手失败?
SNI告诉共享服务器客户端想要哪个主机名。缺失或不正确的SNI可能选择默认虚拟主机、错误的证书或不兼容的TLS政策。
抓取器可以忽略SSL握手失败吗?
抓取器不应忽略握手失败或禁用证书验证。它应记录安全连接错误,排除提取结果,并在证书或TLS配置修复后使用授权路径。