首頁  >  文章  >  後端開發  >  為什麼 Windows XP 上的 Golang 1.9.2 會報告'x509:由未知頒發機構簽署的憑證”,而瀏覽器卻不會?

為什麼 Windows XP 上的 Golang 1.9.2 會報告'x509:由未知頒發機構簽署的憑證”,而瀏覽器卻不會?

DDD
DDD原創
2024-11-12 15:52:02623瀏覽

Why Does Golang 1.9.2 on Windows XP Report

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn