如何忽略无效的 TLS
How to ignore invalid TLS
我通过将 HTTP Get() 发送到 prometheus 端点来获取 prometheus 指标。如果普罗米修斯端点是 http
这有效,但当它是 https
.
时会抛出错误
现在我想要一个用户设置为 ignore_invalid_tls
,可以设置为 true 或 false。
为了实现这个,我需要忽略由 https
端点引起的错误。
我试过这种方法:
client := http.Client{
Timeout: time.Duration(configuration.Endpoint.Timeout) * time.Second,
Transport: &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
},
}
但这只会忽略错误的证书。
当 prometheus 端点是 https 时我得到的错误是:
http: server gave HTTP response to HTTPS client
不能一概而论地忽略“无效的 TLS”。 TLS 握手包括证书的 local 验证,可以使用 InsecureSkipVerify
禁用。但是,如果对方一开始就没有使用 TLS,例如 “服务器向 HTTPS 客户端提供 HTTP 响应”,那么这就不能忽略了。这就像客户端说英语而服务器说西班牙语一样 - 不能简单地忽视双方无法理解对方并继续沟通。
我通过将 HTTP Get() 发送到 prometheus 端点来获取 prometheus 指标。如果普罗米修斯端点是 http
这有效,但当它是 https
.
现在我想要一个用户设置为 ignore_invalid_tls
,可以设置为 true 或 false。
为了实现这个,我需要忽略由 https
端点引起的错误。
我试过这种方法:
client := http.Client{
Timeout: time.Duration(configuration.Endpoint.Timeout) * time.Second,
Transport: &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
},
}
但这只会忽略错误的证书。
当 prometheus 端点是 https 时我得到的错误是:
http: server gave HTTP response to HTTPS client
不能一概而论地忽略“无效的 TLS”。 TLS 握手包括证书的 local 验证,可以使用 InsecureSkipVerify
禁用。但是,如果对方一开始就没有使用 TLS,例如 “服务器向 HTTPS 客户端提供 HTTP 响应”,那么这就不能忽略了。这就像客户端说英语而服务器说西班牙语一样 - 不能简单地忽视双方无法理解对方并继续沟通。