Я создаю 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
}
Есть ли какая-либо причина, по которой последующие запросы с разными клиентами могут по той или иной причине содержать один и тот же сертификат?