科技 · 實用指南
OpenSSL 顯示 wrong version number?改 TLS 前先證明連接埠、協定與代理路徑
保存精確路徑與首批位元組,區分明文、錯誤連接埠、HTTP 代理、STARTTLS、攔截或框架損壞後再修復。

“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。
