使用.crt和.key与https url连接

时间:2020-08-19 10:48:24

标签: go https go-http

我必须连接https url,并且提供了.crt,.key和.csr文件。我正在尝试使用代码:

caCert, err := ioutil.ReadFile("file1.crt")
    if err != nil {
        fmt.Println("error in read crt")
        fmt.Println(err)
    }
    caCertPool := x509.NewCertPool()
    caCertPool.AppendCertsFromPEM(caCert)

    cer, err := tls.LoadX509KeyPair("file1.crt", "file2.key")
    if err != nil {
        fmt.Println("cert load error")
        fmt.Println(err.Error())
    }

    proxyUrl, _ := url.Parse("http://xxx.xxx.xxx.xx:yy")

    client := &http.Client{
        Transport: &http.Transport{
            TLSClientConfig: &tls.Config{
                ServerName:   "abc.com",
                RootCAs:      caCertPool,
                Certificates: []tls.Certificate{cer},
            },
            Proxy: http.ProxyURL(proxyUrl),
        }}
    req, err := http.NewRequest("POST", url, nil)

    if err != nil {
        fmt.Println(err)
    }
    req.Header.Set("id", id)
    resp, err := client.Do(req)

我在代理和公司防火墙后面。当我尝试使用上述代码进行连接时,出现错误:

x509: certificate signed by unknown authority

为什么我遇到此错误。代码正确还是我做错了什么?

0 个答案:

没有答案