【问题标题】:How to ignore invalid TLS如何忽略无效的 TLS
【发布时间】:2021-04-13 20:39:09
【问题描述】:

我通过向 prometheus 端点发送 HTTP Get() 来获取 prometheus 指标。如果 prometheus 端点是 http,这可以工作,但是当它是 https 时会抛出错误。

现在我想要一个用户设置为ignore_invalid_tls,可以设置为真或假。

要实现这一点,我需要忽略https 端点引起的错误。

我试过这种方法:

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

但这只会忽略错误的证书。

prometheus 端点为 https 时我得到的错误是:

http: 服务器给 HTTPS 客户端 HTTP 响应

【问题讨论】:

  • 错误恕我直言,意味着您正在访问 https:// 端点(因此您的 golang 客户端需要 HTTPS 流量)但服务器在 HTTPS 端口上提供 HTTP...

标签: go prometheus amazon-cloudwatch tls1.2


【解决方案1】:

一般不能忽略“无效的 TLS”。 TLS 握手包括证书的本地验证,可以使用InsecureSkipVerify 禁用。但是,如果对方根本不说 TLS,例如 “服务器向 HTTPS 客户端提供 HTTP 响应”,则不能忽略这一点。这就像客户端说英语而服务器说西班牙语一样 - 不能简单地忽略两者无法相互理解并继续通信。

【讨论】:

    猜你喜欢
    • 2021-11-04
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    相关资源
    最近更新 更多