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 放入隔離建置、一次性容器或預備工作節點。
- 依軟體供應鏈制度驗證候選套件。
- 記錄建置功能及 TLS 後端,不能假設測試二進位檔與正式環境一致。
- 原樣執行舊設定,觀察實際連線行為。
- 移除 TLS-SRP 參數,以計畫中的替代設定再執行一次。
- 分別測試正確憑證、錯誤憑證、不受信代理憑證、主機名稱不符與直接連線對照。
- 比較代理解析位址、TLS 協商、407 流程、出口 IP、回應類型及耗時。
- 確認失敗後任何封裝器都不會繞過代理直接重試。
負向測試非常重要。若故意使用錯誤代理憑證仍成功,可能發生驗證繞過、快取連線重用、繼承其他憑證或直接連線。
依原始需求選擇替代方案
不要任意找一個 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 起棄用且無功能。外部資料位址只保存在內部營運紀錄中。