Windows XP 中Golang HTTP x509 的證書驗證錯誤
問題:
運行時在Windows XP 上使用Golang 1.9.2 的客戶端應用程序,使用者在HTTP GET 和POST 請求期間遇到錯誤“x509:由未知頒發機構簽署的證書”,即使證書有效且由受信任的頒發機構簽署。
背景:
當客戶端無法驗證伺服器的憑證鏈時,會發生此錯誤,因為驗證所需的中間憑證未安裝在主機系統的憑證儲存中。
嘗試的解決方案:
為了解決該問題,用戶根據其他來源的建議實現了以下程式碼:
tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkyVerify: true}, }
但是,此解決方案是不正確的,因為欄位名稱是“InsecureSkipVerify”而不是“InsecureSkyVerify”。
正確解決方案:
正確的實現應該是:
tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, }
警告:
使用「InsecureSkipVerify」時請務必小心,因為它會停用伺服器憑證驗證和主機名稱檢查。這可能會使客戶端面臨安全風險,例如中間人攻擊。建議使用自訂驗證或「VerifyConnection」或「VerifyPeerCertificate」來實現安全連線。
以上是為什麼我的 Golang HTTP 請求在 Windows XP 上失敗並顯示「x509:由未知頒發機構簽署的憑證」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!