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 驗證只能出於測試目的或與嚴格的自訂驗證措施結合使用。
以上是為什麼 Windows XP 上的 Golang 1.9.2 會報告'x509:由未知頒發機構簽署的憑證”,而瀏覽器卻不會?的詳細內容。更多資訊請關注PHP中文網其他相關文章!