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

科技 · 實用指南

curl 錯誤 35:改密碼套件前先標出最後成功的 TLS 邊界

錯誤 35 只表示 SSL/TLS 握手失敗,並不說明原因。先記錄 curl 組建、代理路徑與詳細序列,再只改一個邊界並重測。

原創編輯示意圖:標出 TCP、代理 CONNECT、ClientHello、ServerHello 與憑證驗證邊界。
原創編輯示意圖:修改安全設定前,先標出最後完成的邊界。 Watch at Ease

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 提醒詳細與追蹤日誌可能含敏感資料,先保留診斷順序再脫敏。

原創編輯示意圖:比較基線、一個變更邊界與重測結論。
原創編輯示意圖:一次變更回答一個問題,並保持可復原。 Watch at Ease