curl 8.22 預覽:HTTPS 代理 TLS-SRP 停用前的遷移稽核

curl 8.22.0 於 2026 年 8 月 26 日進入第三個候選版本,正式版預計在 9 月 2 日發布。目前 curl 手冊已把 TLS-SRP 命令列選項標示為棄用,並註明從 8.22.0 起不再具有功能。對 HTTPS 代理而言,相關選項包括 --proxy-tlsauthtype--proxy-tlsuser--proxy-tlspassword

這是範圍明確的相容性變更,不是取消 HTTPS 代理,也不是移除一般 HTTP 代理驗證。使用憑證驗證的 HTTPS 代理、Basic、Digest、Negotiate 或其他受支援驗證方式的團隊,不應直接判定受到影響。風險集中在明確要求 TLS-SRP、由封裝程式暗中產生參數,或依賴已被遺忘之編譯功能的設定。

霧面陶瓷網際網路閘道模型將流量從停用的驗證分支重新路由

具體改變了什麼

TLS-SRP 是一種使用使用者名稱和密碼的 TLS 驗證機制。在 curl 中,目標伺服器連線可透過 --tlsauthtype SRP 選擇,連接 HTTPS 代理則可使用 --proxy-tlsauthtype SRP,配套的 user 與 password 選項提供 SRP 憑證。

curl 專案說明 TLS-SRP 無法搭配 TLS 1.3 或 QUIC,而且實際使用極少。8.22 文件仍保留相關選項,以便找出舊設定,但明確寫明這些選項從 8.22.0 起不再發揮作用。

營運上不能只看程式是否啟動。舊命令可能仍被解析,卻不再執行預期驗證。遷移測試必須證明實際連線路徑及驗證結果。

不要混淆三層驗證

層級目的典型證據
代理 TLS 身分驗證 HTTPS 代理提供的憑證可信憑證鏈、正確主機名稱、協商 TLS 版本
到代理的 TLS-SRP舊式 TLS 層使用者名稱密碼驗證明確 TLS-SRP 選項及支援該功能的 TLS 後端
HTTP 代理驗證在代理協定內驗證用戶端407 挑戰與 Proxy-Authorization 交換

移除 TLS-SRP 不等於關閉憑證驗證,也不表示 --proxy-user 或受支援的 --proxy-auth 方法消失。遷移紀錄必須分開說明三層,避免把 HTTP 驗證成功誤認為舊 TLS-SRP 仍有效。

升級前找出受影響設定

搜尋程式碼倉庫、部署範本、CI 變數、容器入口、工作排程器、操作手冊及產生命令,涵蓋以下 CLI 關鍵字:

--proxy-tlsauthtype
--proxy-tlsuser
--proxy-tlspassword
--tlsauthtype
--tlsuser
--tlspassword

同時檢查 libcurl 中等價的 TLS 驗證設定。CI 結果不得列印密碼,只能回報檔案、設定負責人、環境、選項名稱及密鑰參照編號。

每個匹配項應分類為:

  • 作用中: 目前正式、預備或排程工作會執行。
  • 產生: 封裝器或 SDK 自動產生,手冊中看不到。
  • 休眠: 映像、範例或備援路徑中仍可被啟用。
  • 僅文件: 只存在於說明或測試文字,不影響連線。
  • 誤判: 字詞存在,但不是 curl 或 libcurl 設定。

只有負責人確認該路由是否仍需要,盤點才算完整。

建立目前基準

變更 curl 前,以目前部署版本和完全相同的代理路徑重現一個獲准請求,記錄:

  • curl 與 libcurl 版本;
  • TLS 後端及其版本;
  • 代理 scheme、主機標籤、連接埠及請求區域;
  • 解析後的代理位址與 IP 家族;
  • 代理憑證主體、簽發者、有效期及驗證結果;
  • 協商 TLS 版本與密碼套件;
  • 是否出現 407,以及使用哪種 HTTP 代理驗證;
  • 最終回應類型、結束碼、總耗時與 UTC 時間。

憑證與權杖必須去識別。需要證明使用相同測試身分時,保存加鹽指紋或密鑰管理器參照,不保存明文。

基準應透過受控目標建立。請求一個無關公開頁面成功,不能證明企業 HTTPS 代理、驗證政策與憑證信任路徑正確。

安全測試 8.22 候選版

curl 專案明確表示候選版只用於測試,不用於正式環境。把 rc3 放入隔離建置、一次性容器或預備工作節點。

  1. 依軟體供應鏈制度驗證候選套件。
  2. 記錄建置功能及 TLS 後端,不能假設測試二進位檔與正式環境一致。
  3. 原樣執行舊設定,觀察實際連線行為。
  4. 移除 TLS-SRP 參數,以計畫中的替代設定再執行一次。
  5. 分別測試正確憑證、錯誤憑證、不受信代理憑證、主機名稱不符與直接連線對照。
  6. 比較代理解析位址、TLS 協商、407 流程、出口 IP、回應類型及耗時。
  7. 確認失敗後任何封裝器都不會繞過代理直接重試。

負向測試非常重要。若故意使用錯誤代理憑證仍成功,可能發生驗證繞過、快取連線重用、繼承其他憑證或直接連線。

依原始需求選擇替代方案

不要任意找一個 curl 參數替代 TLS-SRP。先確認舊設定原本要解決什麼問題。

若需求是驗證 HTTPS 代理身分,應使用一般 TLS 憑證與主機名稱驗證以及核准的信任庫;需要用戶端憑證時,依代理支援政策明確設定。

若需求是在 HTTP 代理層驗證,使用 curl 與代理雙方支援的方法,並由密鑰管理器注入,避免憑證出現在處理程序清單。

若需求是避免憑證遭竊聽,連接代理的 HTTPS 傳輸與嚴格憑證驗證仍不可缺少;驗證方法不能取代傳輸驗證。

若服務確實依賴 TLS-SRP 且沒有替代方案,不要發布未經審核的繞過方法。記錄依賴、隔離工作負載、聯絡代理或應用負責人;舊 curl 版本只能在有負責人、補償控制及明確到期日的例外下暫時保留。

建立驗收矩陣

測試預期結果
憑證與認證都正確請求經過代理並到達核准目標
代理憑證錯誤驗證失敗,且不直接備援
代理憑證不受信傳送業務資料前 TLS 驗證失敗
代理主機名稱不符連線關閉失敗
代理無法使用在規定逾時內失敗,不靜默繞過
IPv4 與 IPv6各自遵循預期代理與 DNS 政策
黏著工作階段出口身分在約定邊界內保持穩定

完整封包擷取可能暴露客戶資料時,保存不含封包的證據摘要。curl 詳細紀錄也可能含標頭及連線細節,對外分享前必須去識別。

灰度與回復

依工作負載群組推進,不要一次替換所有 curl。先執行合成探針,再處理低風險流量,最後按比例放大正式流量。

部署前定義回復訊號:代理連線失敗、憑證錯誤、407 比例異常、偵測到直連、出口區域漂移或延遲明顯惡化。回復包應記錄舊二進位檔或映像摘要及舊設定,但不能恢復已過期密鑰。

curl 8.22.0 正式版發布後,仍要對簽署的正式建置重複測試。候選版結果可以降低風險,不能取代正式版驗收。

相關檢查可繼續閱讀 98IP 的代理 407 驗證故障診斷代理診斷檔案安全去識別curl IPv6 作用域行為測試

遷移檢查清單

  • [ ] 已搜尋六個 CLI TLS-SRP 選項及等價 libcurl 設定。
  • [ ] 已分類作用中、產生、休眠、僅文件與誤判項目。
  • [ ] 已記錄目前 curl、TLS 後端、代理路由及驗證基準。
  • [ ] 候選版只在隔離環境測試。
  • [ ] 正確與錯誤憑證均產生預期結果。
  • [ ] 憑證、主機名稱、逾時、IPv4、IPv6 及直連備援檢查通過。
  • [ ] 替代方案符合原始需求,而不只是壓掉錯誤。
  • [ ] 憑證與詳細紀錄已去識別。
  • [ ] 灰度、回復門檻、負責人與例外到期日已記錄。
  • [ ] 正式版發布後將重新驗收。

常見問題

curl 8.22 是否移除了 HTTPS 代理?

沒有。變更是移除 TLS-SRP。HTTPS 代理傳輸、憑證驗證與受支援 HTTP 代理驗證屬於不同能力。

保留舊 TLS-SRP 參數時 curl 一定會報錯嗎?

不要依賴解析失敗。目前手冊說明這些選項從 8.22.0 起棄用且無功能,應透過連線及負向測試驗證實際行為。

rc3 可以用於正式環境嗎?

curl 專案明確要求候選版只用於測試與驗證。正式上線前必須用簽署正式版本重新測試。

能否無限期保留舊 curl?

這會累積維護與安全風險。只有沒有替代方案時才能使用有負責人及到期日的暫時例外,並持續追蹤退出計畫。

合規說明

只測試獲准使用的代理、憑證、目標與網路。避免密鑰進入命令歷程及處理程序清單,最小化診斷資料並限制存取。相容性遷移不能降低憑證驗證、啟用直接備援或掩蓋驗證失敗。

內部研究說明:curl 於 2026 年 8 月 26 日發布 8.22.0-rc3,正式版預計在 9 月 2 日發布。目前 curl 手冊將 TLS-SRP 選項標示為從 8.22.0 起棄用且無功能。外部資料位址只保存在內部營運紀錄中。