我正试着在https://github.com/golang/build/tree/master/cmd/coordinator运行构建器
本地托管的服务器连接一直无法连接,从而导致错误:
first record does not look like a TLS handshake
失败的代码来自build/cmd/buildlet/reverse.go,它是:
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问题的同时建立连接,因为服务器位于本地主机上
我似乎想不出怎么解决这个问题。关于重新创建我的问题的说明在上面的链接上。我建议的唯一改变是使用
go run . -mode=dev -listen-http=localhost:8119
对于第一个命令
发布于 2022-07-13 04:25:21
InsecureSkipVerify
只是意味着TLS证书验证约束被放松(到了连接不安全和容易受到MITM攻击的程度)。
来自文档
如果InsecureSkipVerify为真,则crypto/tls接受服务器提供的任何证书以及该证书中的任何主机名。
您仍然需要在另一端使用TLS的连接。您所得到的错误意味着连接的另一端不会说TLS。
如果您不想在devMode中使用TLS,那么应该在开发模式下直接使用tcpConn
,而不使用*tls.Conn
。*tls.Conn
实现了net.Conn
,因此在握手之后,无论它是否有TLS,使用连接的方式都不会有任何不同。
https://stackoverflow.com/questions/72960246
复制相似问题