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