сертификат появляется после запроса, который был использован в - PullRequest
0 голосов
/ 04 апреля 2019

Я создаю 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
}

Есть ли какая-либо причина, по которой последующие запросы с разными клиентами могут по той или иной причине содержать один и тот же сертификат?

...