Golang如何绕过x509证书由未知机构签名的问题
Golang如何绕过x509证书由未知机构签名的问题 请帮助我,
我的 GOPROXY 设置为 “https://cicd-jfrog***.com/artifactory/api/go/go-git”,我想绕过自签名证书。
致礼
1 回复
更多关于Golang如何绕过x509证书由未知机构签名的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
可以通过设置自定义的 http.Transport 来绕过 x509 证书验证。以下是示例代码:
package main
import (
"crypto/tls"
"net/http"
"os"
)
func main() {
// 创建自定义 Transport,跳过证书验证
tr := &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true, // 跳过证书验证
},
}
// 创建使用自定义 Transport 的 HTTP 客户端
client := &http.Client{Transport: tr}
// 设置环境变量,使 go 命令使用这个客户端
os.Setenv("GODEBUG", "http2client=0") // 禁用 HTTP/2(可选)
http.DefaultClient = client
http.DefaultTransport = tr
}
或者针对 GOPROXY 单独设置:
package main
import (
"crypto/tls"
"net/http"
"net/url"
"os"
)
func main() {
// 创建自定义 Transport
tr := &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
Proxy: http.ProxyFromEnvironment,
}
// 设置 GOPROXY
proxyURL := "https://cicd-jfrog***.com/artifactory/api/go/go-git"
os.Setenv("GOPROXY", proxyURL)
// 创建自定义 HTTP 客户端
client := &http.Client{
Transport: tr,
}
// 验证代理设置
_, err := url.Parse(proxyURL)
if err != nil {
panic(err)
}
// 设置为默认客户端
http.DefaultClient = client
http.DefaultTransport = tr
}
对于 go get 命令,可以在程序启动时设置:
package main
import (
"crypto/tls"
"net/http"
"os"
)
func init() {
http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{
InsecureSkipVerify: true,
}
}
func main() {
// 你的代码
}
注意:InsecureSkipVerify: true 会禁用 TLS 证书验证,存在安全风险,仅建议在开发或内部网络中使用。

