簡體   English   中英

Golang TLS 握手超時,影響 go 獲取和 go 代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM