запрос https с client.crt и client.key в golang - PullRequest
0 голосов
/ 19 февраля 2019

Я хочу отправить запрос POST на сервер https и получить ответ.Вот что я делаю в curl, и это хорошо работает.

curl --key ./client.key --cert ./client.crt https://test-as.sgx.trustedservices.intel.com:443/attestation/sgx/v2/report -H 'Content-Type: application/json' --data '{"key": "value"}'

Это фрагмент кода, который я пробовал в Golang

    url := "https://test-as.sgx.trustedservices.intel.com:443/attestation/sgx/v2/report"
    pair, e := tls.LoadX509KeyPair("client.crt", "client.key")
    if e != nil {
        log.Fatal("LoadX509KeyPair:", e)
    }

    client := &http.Client{
        Transport: &http.Transport{
            TLSClientConfig: &tls.Config{
                InsecureSkipVerify: true,
                Certificates: []tls.Certificate{pair},
            },
        }}

    resp, e := client.Post(url, "application/json", bytes.NewBufferString(payload))

Программа зависаетв последней строке сообщение об ошибке

Post: dial tcp connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

Я чувствую, что в моем коде установки соединения есть проблема, а не проблема сервера, так как сервер отлично работает с curl.

Благодарим за любую помощь!

1 Ответ

0 голосов
/ 20 февраля 2019

Во-первых, никогда и никогда используйте InsecureSkipVerify: true, как бы удобно это ни казалось.Вместо этого установите что-то вроде:

tls.Config {
    ServerName: "test-as.sgx.trustedservices.intel.com",
    Certificates: []tls.Certificate{pair}
}

Во-вторых, инициализация http.Transport - для передачи вашего пользовательского tls.Config - также обнуляет все остальные настройки http.Transport по умолчанию, которые поставляются со значением http.Client.

Некоторые из этих нулевых значений по умолчанию могут вызывать поведение, которого вы не ожидаете.См. здесь о том, как восстановить некоторые из этих исходных значений по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...