go(土)语(拨)言(鼠) http.get报错x509: certificate signed by unknown authority

博主用Go语言的http.get请求获取JS文件内容时报错,用Postman尝试也不行。经百度参考文章得知,问题是x509错误,原因是模拟浏览器端默认校验服务端数字证书,可忽略证书解决问题,最终成功获取到文件内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开篇致谢:https://studygolang.com/articles/11175

我只是想获取一个js文件内容:https://www.hongniang.com/public/js/city.min.js

用http.get请求时发生报错

panic: Get https://www.hongniang.com/public/js/city.min.js: x509: certificate signed by unknown authority

于是用postman尝试下,把head都写上
psotman告诉我:

Could not get any response
There was an error connecting to https://www.hongniang.com/public/js/city.min.js.

???为什么我浏览器可以但是这个不行
只好百度一下,emmmm 看到了开头致谢的文章,好的 问题解决(早这么做不就行了嘛)
问题x509的原因竟然是?:
模拟浏览器(client)端默认要对服务端传过来的数字证书进行校验
(我怎么知道你的数字证书是啥啊!摔)
于是告诉我,我们可以忽略这个证书:

	tr := &http.Transport{
		TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
	}
	
	client := &http.Client{Transport: tr}   //学艺不精 别问我为啥这么设置 我不懂啊

结果当然大圆满咯

{“citylist”:[{“p”:“北京”,“c”:[{“n”:“东城区”},{“n”:“西城区”},{“n”:“崇文区”},{“n”:“宣武区”},{“n”:“朝阳区”},{“n”:“丰台区”},…

当你在使用 Go 的 `go mod tidy` 或者其他涉及网络请求的 `go get`、`go build` 等命令时,可能会遇到 "tls: failed to verify certificate: x509: certificate signed by unknown authority" 的错误。这通常意味着 Go 安装过程中尝试连接到的第三方包的服务器提供的 SSL/TLS 证书不受信任。 这个问题通常是由于以下几个原因: 1. **自签发证书**:第三方仓库使用的是自签名证书,而不是常见的像 Let's Encrypt 这样的受信任证书颁发机构(CA)签发的证书。 2. **证书过期**:证书已经到期,导致无法验证。 3. **证书列表更新**:你的系统证书存储可能未及时更新,不包含该服务器的新证书。 解决这个问题有几种途径: - **忽略安全警告**:如果你确定这个证书是可信的,可以在运行 `go mod tidy` 之前临时禁用证书检查,但这种方式并不推荐长期使用,因为安全性会受到影响。可以这样做: ```sh GOINSECURE=1 go mod tidy ``` - **添加证书的信任**:如果是第三方仓库的问题,你需要手动导入其证书到你的系统证书存储。但这需要对操作系统的证书管理有一定的了解。 - **更新证书存储**:确保你的操作系统证书存储已更新至最新版本,可以使用 `sudo update-ca-certificates` (Linux) 或 `sccp -f cacert.pem /usr/local/share/ca-certificates` (macOS)。 - **更换镜像源**:如果可能的话,选择一个提供受信任证书的官方或者知名的 Go 包镜像源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值