说我想以https://golang.org编程方式获得。目前golang.org(ssl)有一个错误的证书颁发给*.appspot.com所以当我运行这个时:
https://golang.org
*.appspot.com
package main import ( "log" "net/http" ) func main() { _, err := http.Get("https://golang.org/") if err != nil { log.Fatal(err) } }
我得到(如我所料)
Get https://golang.org/: certificate is valid for *.appspot.com, *.*.appspot.com, appspot.com, not golang.org
现在,我想自己信任这个证书(想象一个我可以验证指纹等的自我颁发的证书):我如何提出请求并验证/信任证书?
我可能需要使用 openssl 下载证书,将其加载到我的文件中并填写tls.Configstruct !?
tls.Config
安全说明:禁用安全检查是危险的,应该避免
您可以对默认客户端的所有请求全局禁用安全检查:
package main import ( "fmt" "net/http" "crypto/tls" ) func main() { http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true} _, err := http.Get("https://golang.org/") if err != nil { fmt.Println(err) } }
您可以禁用客户端的安全检查:
package main import ( "fmt" "net/http" "crypto/tls" ) func main() { tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, } client := &http.Client{Transport: tr} _, err := client.Get("https://golang.org/") if err != nil { fmt.Println(err) } }