Golang HTTP x509: 有關證書頒發機構未知的錯誤
最近,個人在嘗試訪問後端系統時遇到了挑戰在Windows XP 上使用Golang 1.9.2。儘管在Windows 和Linux 等更現代的作業系統上運行完美,但在Windows XP 上運行程式碼的用戶遇到了以下錯誤:「x509:由未知頒發機構簽署的憑證。」
使用Firefox ESR和基於瀏覽器的測試Chromium 瀏覽器顯示,從同一Windows XP 環境存取相同URL 時,這些瀏覽器不會引發任何與憑證相關的問題。值得注意的是,受影響的 SSL 憑證仍然有效,並且由受信任的憑證授權單位簽署。
有些人嘗試透過使用 InsecureSkipVerify 參數覆蓋 TLS 驗證來解決此問題:
import ("net/http"; "crypto/tls") tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, } client := &http.Client{Transport: tr} resp, err := client.Get("https://someurl:443/")
然而,這種方法已被證明是無效的。需要注意的是,應謹慎對待覆蓋 TLS 驗證,因為它會使應用程式面臨中間人攻擊等潛在威脅。
如果您遇到相同的問題,請確保您已正確設定 InsecureSkipVerify 參數。您可能無意中將其設定為“InsecureSkyVerify”。這是正確的程式碼片段:
// NewAPIClient - creates a new API client func NewAPIClient() Client { c := &APIClient{} tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, } c.client = &http.Client{Transport: tr} return c }
請記住,重寫 TLS 驗證只能出於測試目的或與嚴格的自訂驗證措施結合使用。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3