#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», то это нельзя игнорировать. Это похоже на то, что клиент говорит по-английски, а сервер говорит по-испански — нельзя просто игнорировать, что оба не могут понять друг друга и продолжить общение.