Как игнорировать недопустимый TLS

#go #prometheus #amazon-cloudwatch #tls1.2

#Вперед #prometheus #amazon-cloudwatch #tls1.2

Вопрос:

Я извлекаю метрики prometheus, отправляя HTTP Get() в конечную точку prometheus. Если конечная точка prometheus http — это работает, но выдает ошибку, когда это так https .

Теперь я хочу иметь пользовательский параметр as ignore_invalid_tls , для которого можно установить значение true или false.

Чтобы реализовать это, мне нужно игнорировать ошибку, вызванную https конечной точкой.

Я попробовал этот подход:

 client := http.Client{
    Timeout: time.Duration(configuration.Endpoint.Timeout) * time.Second,
    Transport: amp;http.Transport{
        TLSClientConfig: amp;tls.Config{InsecureSkipVerify: true},
    },
}
 

но это игнорирует только плохие сертификаты.

Ошибка, которую я получаю, когда конечной точкой prometheus является https,:

http: сервер дал HTTP-ответ клиенту HTTPS

Комментарии:

1. Ошибка IMHO означает, что вы нажимаете конечную точку https: // (поэтому ваш клиент golang ожидает HTTPS-трафик), но сервер обслуживает HTTP через порт HTTPS…

Ответ №1:

В общем случае нельзя игнорировать «недопустимый TLS». Квитирование TLS включает локальную проверку сертификата, которая может быть отключена с InsecureSkipVerify помощью . Но если другая сторона просто не использует TLS в первую очередь, как в «сервер дал HTTP-ответ клиенту HTTPS», то это нельзя игнорировать. Это похоже на то, что клиент говорит по-английски, а сервер говорит по-испански — нельзя просто игнорировать, что оба не могут понять друг друга и продолжить общение.