首页  >  文章  >  后端开发  >  为什么 Windows XP 上的 Golang 1.9.2 会报告“x509:由未知颁发机构签名的证书”,而浏览器却不会?

为什么 Windows XP 上的 Golang 1.9.2 会报告“x509:由未知颁发机构签名的证书”,而浏览器却不会?

DDD
DDD原创
2024-11-12 15:52:02568浏览

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