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 证书验证,存在安全风险,仅建议在开发或内部网络中使用。

回到顶部