科技 · 實用指南
curl 錯誤 35:改密碼套件前先標出最後成功的 TLS 邊界
錯誤 35 只表示 SSL/TLS 握手失敗,並不說明原因。先記錄 curl 組建、代理路徑與詳細序列,再只改一個邊界並重測。

curl 錯誤 35 是一組握手失敗,不是單一診斷。關鍵線索是最後完成的邊界:TCP、代理 CONNECT、ClientHello、ServerHello 或憑證驗證。修改安全設定前先保存序列。
固定確切失敗路徑
記錄不含秘密的 URL、執行主機、代理環境、IP 族與 curl -V。版本輸出會標示 curl 組建和 TLS 後端;不同後端的錯誤文字不相同。
記錄最後已證明邊界
對無副作用請求執行 curl -v,脫敏後保留有序傳輸行。TCP 成功只證明路由與監聽;CONNECT 200 只證明隧道。送出 ClientHello 證明 TLS 已嘗試,收到警示或 ServerHello 才推進邊界。
依第一個缺失步驟分類
ServerHello 前出現 HTTP 位元組或 wrong version number,常指向非 TLS 服務、錯誤連接埠或代理協定不符。ClientHello 後重設要查伺服器、檢查設備、SNI、協定或政策;憑證後失敗屬信任或身分分支。
以 s_client 獨立重現
用相同主機、連接埠與 SNI 執行 openssl s_client;只有實際使用 HTTP CONNECT 代理才加代理參數。它顯示協定、警示、憑證與驗證邊界,但不代表所有 curl 後端政策相同。
一次只改一個邊界
僅重測一個變數:正確連接埠、政策允許時的直連與代理、同一主機配核准 IP,或一個協定範圍。不要同時加入 insecure、密碼套件、繞過代理與升級。邊界沒移動就還原。
不削弱信任地證明修復
重複原命令並保存邊界帳本與唯一改動。保持憑證及主機名驗證。curl 提醒詳細與追蹤日誌可能含敏感資料,先保留診斷順序再脫敏。
