我创建一个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
}
出于任何原因,不同客户端的后续请求可能包含相同证书的任何原因吗?