证书在请求中使用后似乎仍然存在

时间:2019-04-04 05:32:55

标签: go net-http

我创建一个http客户端,并发出一个带有附加(自签名)证书对象的http请求。我将InsecureSkipVerify: true添加到客户端的TLSClientConfig以避免错误。

后来我又提出了一个没有证书的无关请求,由于以下原因而失败了

x509: certificate signed by unknown authority

如果我将InsecureSkipVerify: true添加到新请求中,这将消失,但是我觉得我不必这样做,因为第二个请求与任何种类的认证无关。

谁能告诉我为什么第二个未经认证的请求可能引发此错误?在第一个请求完成后,我尝试了transport.CloseIdleConnections(),但这似乎没有用。

第一个请求:


func (s *loginSession) loginRequest() ([]byte, error) {
    cert, err := tls.LoadX509KeyPair(
        assist.PathToPackage()+certFilePath,
        assist.PathToPackage()+keyFilePath,
    )
    if err != nil {
        return nil, err
    }

    trans := &http.Transport{
        DisableKeepAlives: true,
        TLSClientConfig: &tls.Config{
            Certificates:       []tls.Certificate{cert},
            InsecureSkipVerify: true,
        },
    }

    client := &http.Client{
        Transport: trans,
    }

    req, err := http.NewRequest("POST", loginURL, s.loginPayload())

    if err != nil {
        return nil, err
    }

    req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
    req.Header.Add("X-Application", s.applicationKey)

    resp, err := client.Do(req)

    if err != nil {
        return nil, err
    }

    bodyBytes, err := assist.SafeJsonBytes(resp.Body)

    trans.CloseIdleConnections()

    return bodyBytes, err
}

出于任何原因,不同客户端的后续请求可能包含相同证书的任何原因吗?

0 个答案:

没有答案