首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么tls.Client在消息中失败:第一条记录看起来不像TLS握手

为什么tls.Client在消息中失败:第一条记录看起来不像TLS握手
EN

Stack Overflow用户
提问于 2022-07-13 02:26:18
回答 1查看 418关注 0票数 0

我正试着在https://github.com/golang/build/tree/master/cmd/coordinator运行构建器

本地托管的服务器连接一直无法连接,从而导致错误:

代码语言:javascript
运行
复制
first record does not look like a TLS handshake

失败的代码来自build/cmd/buildlet/reverse.go,它是:

代码语言:javascript
运行
复制
    tcpConn.SetDeadline(time.Now().Add(30 * time.Second))
    config := &tls.Config{
        ServerName:         serverName,
        InsecureSkipVerify: devMode,
    }
    conn := tls.Client(tcpConn, config)
    if err := conn.Handshake(); err != nil {
        return nil, fmt.Errorf("failed to handshake with coordinator: %v", err)
    }

我认为应该在忽略TLS问题的同时建立连接,因为服务器位于本地主机上

我似乎想不出怎么解决这个问题。关于重新创建我的问题的说明在上面的链接上。我建议的唯一改变是使用

代码语言:javascript
运行
复制
go run . -mode=dev -listen-http=localhost:8119

对于第一个命令

EN

回答 1

Stack Overflow用户

发布于 2022-07-13 04:25:21

InsecureSkipVerify只是意味着TLS证书验证约束被放松(到了连接不安全和容易受到MITM攻击的程度)。

来自文档

如果InsecureSkipVerify为真,则crypto/tls接受服务器提供的任何证书以及该证书中的任何主机名。

您仍然需要在另一端使用TLS的连接。您所得到的错误意味着连接的另一端不会说TLS。

如果您不想在devMode中使用TLS,那么应该在开发模式下直接使用tcpConn,而不使用*tls.Conn*tls.Conn实现了net.Conn,因此在握手之后,无论它是否有TLS,使用连接的方式都不会有任何不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72960246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档