diff --git a/src/cmd/go/http.go b/src/cmd/go/http.go index 13d5c46706..3a6f19db84 100644 --- a/src/cmd/go/http.go +++ b/src/cmd/go/http.go @@ -12,6 +12,7 @@ package main import ( + "crypto/tls" "fmt" "io" "io/ioutil" @@ -24,8 +25,17 @@ import ( // httpClient is the default HTTP client, but a variable so it can be // changed by tests, without modifying http.DefaultClient. var httpClient = http.DefaultClient -var impatientHTTPClient = &http.Client{ + +// impatientInsecureHTTPClient is used in -insecure mode, +// when we're connecting to https servers that might not be there +// or might be using self-signed certificates. +var impatientInsecureHTTPClient = &http.Client{ Timeout: time.Duration(5 * time.Second), + Transport: &http.Transport{ + TLSClientConfig: &tls.Config{ + InsecureSkipVerify: true, + }, + }, } type httpError struct { @@ -71,7 +81,7 @@ func httpsOrHTTP(importPath string, security securityMode) (urlStr string, body log.Printf("Fetching %s", urlStr) } if security == insecure && scheme == "https" { // fail earlier - res, err = impatientHTTPClient.Get(urlStr) + res, err = impatientInsecureHTTPClient.Get(urlStr) } else { res, err = httpClient.Get(urlStr) }