[英]Golang TLS handshake timeout, affecting go get and go code
Golang 不能再在我的 mac 上完成 TLS 握手(Catalina,但这个问题首先出现在 Mojave 上)。
我首先注意到这是由于go get
失败而发生的:
unrecognized import path "golang.org/x/text": https fetch: Get "https://golang.org/x/text?go-get=1": net/http: TLS handshake timeout
但我也确认这也会影响 golang 代码。 这是我希望工作的一个基本示例:
package main
import (
"fmt"
"net/http"
)
func main() {
resp, err := http.Get("https://google.com")
fmt.Printf("%v, %v\n", resp, err)
}
如果我将此文件保存为main.go
并运行它,我会得到与从go get
看到的相同的错误:
<nil>, Get "https://google.com": net/http: TLS handshake timeout
我不知道哪里出错了 - https 站点在我的浏览器上运行良好,当我使用 Python requests
package 时,可以正常访问 ITLS 站点(或 curl 站点)。 似乎这是一个特定于go的失败。
为了完整起见,这是go env
的 output :
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/nickchadwick/Library/Caches/go-build"
GOENV="/Users/nickchadwick/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/nickchadwick/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/l9/r8jjmhm13hvcpwppdt9sklm00000gn/T/go-build865222134=/tmp/go-build -gno-record-gcc-switches -fno-common"
任何有关解决此问题的提示将不胜感激! 无法go get
东西真是太可惜了。
在将其缩小到 macOS 问题后, 这解决了它:清理旧的钥匙串访问系统证书。
我遇到了类似的事情。 当我在没有CGO_ENABLED
标志的情况下在 Mac 上构建二进制文件时,它似乎可以工作。 只需在构建期间添加CGO_ENABLED
就会导致此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.