如何忽略无效的 TLS

Posted

技术标签:

【中文标题】如何忽略无效的 TLS【英文标题】:How to ignore invalid 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.ConfigInsecureSkipVerify: true,
    ,

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

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

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

【问题讨论】:

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

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

【讨论】:

以上是关于如何忽略无效的 TLS的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 IWinHttpRequest 忽略无效证书?

如何使用 getopts 忽略无效参数并继续解析?

如何忽略 Guzzle 5 中的无效 SSL 证书错误

jdk1.6 支持 tls1.2协议 并忽略身份验证

警告:忽略无效的分发 -ip (c:\python39\lib\site-packages) 我该如何解决这个问题,这是啥意思? [复制]

如何通过忽略每次按键上的无效字符来使文本类型的输入元素只接受一个数值(十进制、正数和负数)?