Watch at Ease看見世界,讀懂生活。

科技 · 實用指南

OpenSSL 顯示 wrong version number?改 TLS 前先證明連接埠、協定與代理路徑

保存精確路徑與首批位元組,區分明文、錯誤連接埠、HTTP 代理、STARTTLS、攔截或框架損壞後再修復。

原創示意圖:從 client、proxy 或 inspection path、目標 listener 追到決定是否為 TLS 的 first bytes。
原創示意圖:從 client、proxy 或 inspection path、目標 listener 追到決定是否為 TLS 的 first bytes。 Watch at Ease

“wrong version number” 是 record layer 線索,不表示對端只支援舊 TLS。它常在憑證出現前發生,因為首批資料不符合 TLS record。

先保留 URL、host、port、proxy 環境與錯誤,再用 direct TLS、HTTP CONNECT 或正確 STARTTLS 重測。只修一個已證明邊界,並驗收 TLS 身分與應用回應。

固定精確路徑與原始錯誤

記錄 application、OpenSSL 版本、完整 URL、解析位址、port、proxy 變數、NO_PROXY 及 mesh 或檢查設備。重試前保存第一次失敗。

查看是否出現 peer certificate;若沒有且只讀到少數 bytes,先查 protocol boundary,不先改 trust store。不可公開 proxy 密碼或敏感封包。

區分 direct TLS、CONNECT 與 STARTTLS

即時 TLS 用 openssl s_client -connect host:port -servername host -brief;即使連線 IP,SNI 仍應是目標虛擬主機。

HTTP proxy 用 -proxy 發出 CONNECT,proxy endpoint 常是 plain HTTP。SMTP、IMAP、POP3、FTP、LDAP、PostgreSQL 應使用相符 -starttls。

把第一個回應當作協定證據

TLS record 有定義好的 header 與 handshake。ASCII HTTP 狀態、SMTP banner、proxy block page 或錯誤文字,證明預期 TLS 之前已有元件回應;保存短小脫敏樣本。

將回應歸屬到錯誤 listener、reverse proxy port、health endpoint、sidecar、outbound proxy、inspection gateway 或 application protocol。不同網路結果不同就比較路徑。

只修已證明的邊界

修正 scheme、port、proxy/CONNECT policy、STARTTLS、load balancer listener、upstream mapping 或 framing。不可用舊 TLS、弱 cipher 或停用驗證掩蓋非 TLS peer。

若第一批是有效 TLS 而稍後 negotiation 失敗,依真實 alert、version、cipher、certificate 或 SNI 另案處理。

要求同路徑 TLS 與應用驗收

從原 runtime 與 network path 重測,記錄 certificate identity、hostname verification、protocol、cipher、SNI、proxy/STARTTLS 與 remote address;application 必須維持驗證。

最後取得一個安全 application response。僅僅不再看到舊字串不算通過;保存 route ledger。

原創示意圖:用四步分類路徑、修復單一邊界、驗證 TLS identity,再驗證 application response。
原創示意圖:用四步分類路徑、修復單一邊界、驗證 TLS identity,再驗證 application response。 Watch at Ease