Watch at Ease看见世界,读懂生活。

科技 · 实用指南

OpenSSL 报 wrong version number?改 TLS 前先证明端口、协议与代理路径

保存准确路径与首批字节,区分明文、错误端口、HTTP 代理、STARTTLS、中间拦截或帧损坏,再决定修复。

原创示意图:从客户端、代理或检查路径、目标监听器追踪到决定是否为 TLS 的首批字节。
原创示意图:从客户端、代理或检查路径、目标监听器追踪到决定是否为 TLS 的首批字节。 Watch at Ease

“wrong version number” 是记录层线索,不等于对端只支持旧 TLS。它常在任何证书出现前发生,因为收到的首批字节不像 OpenSSL 期待的 TLS 记录。

先保留 URL、主机、端口、代理环境和完整错误,再按直连 TLS、HTTP CONNECT 或正确 STARTTLS 模式复测。只修一个已证明的边界,并用 TLS 身份和应用响应双重验收。

固定准确路径与原始错误

记录应用、OpenSSL 版本、完整 URL、解析地址、端口、代理变量、NO_PROXY 决策,以及 service mesh 或 TLS 检查设备。重试前保留首次失败。

确认是否出现对端证书;若无证书且只读取数个字节,先查协议边界而不是信任库。不得公开代理凭据或含秘密的数据包。

区分直连 TLS、CONNECT 与 STARTTLS

即时 TLS 使用 openssl s_client -connect host:port -servername host -brief 检查;即使指定 IP,SNI 仍应是目标虚拟主机名。

HTTP 代理使用 -proxy 发起 CONNECT;代理端点常是明文 HTTP。SMTP、IMAP、POP3、FTP、LDAP、PostgreSQL 等升级协议应使用对应 -starttls,而不是向明文欢迎端口直接发 ClientHello。

把首批响应当作协议证据

TLS 记录有明确头部与握手顺序。ASCII HTTP 状态、SMTP banner、代理拦截页或产品错误文字,证明预期 TLS 端点之前已有组件响应;保存少量脱敏十六进制与文本。

将响应归属到错误监听器、反向代理端口、健康检查端点、sidecar、出站代理、检查网关或应用协议。不同网络字节不同就比较路径,不把偶然成功称为版本修复。

只修已证明的边界

按证据修正 scheme、端口、代理与 CONNECT 策略、STARTTLS 模式、负载均衡监听器、上游映射或应用帧。不要降低 TLS、削弱密码套件或关闭证书校验。

若首批字节确为 TLS 而在后续协商失败,应依据真实 alert、版本、密码套件、证书或 SNI 另开问题,与记录边界错误分开。

要求同路径 TLS 与应用双验收

从原运行时和网络路径复测,记录目标证书身份、主机名校验、协商协议和密码套件、SNI、代理或 STARTTLS 模式与远端地址。s_client 仅用于诊断,应用仍须强制校验。

最后取得一个无害应用响应:目标虚拟主机 HTTP 状态、STARTTLS 后邮件能力行或数据库协议响应。只是不再出现旧错误不算通过;保留路径清单。

原创示意图:用四步分类路径、修复单一边界、验证 TLS 身份,再验证应用响应。
原创示意图:用四步分类路径、修复单一边界、验证 TLS 身份,再验证应用响应。 Watch at Ease