Golang httptls 通信,带证书请求小实例
发布时间:2020-12-16 18:31:57 所属栏目:大数据 来源:网络整理
导读:package wgetimport ("crypto/tls""crypto/x509""io""net/http""os")func client(rootCa,rootKey string) *http.Client {var tr *http.Transportcerts,err := tls.LoadX509KeyPair(rootCa,rootKey)if err != nil {tr = http.Transport{TLSClientConfig: tls.
package wget import ( "crypto/tls" "crypto/x509" "io" "net/http" "os" ) func client(rootCa,rootKey string) *http.Client { var tr *http.Transport certs,err := tls.LoadX509KeyPair(rootCa,rootKey) if err != nil { tr = &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true},} } else { ca,err := x509.ParseCertificate(certs.Certificate[0]) if err != nil { return &http.Client{Transport: tr} } pool := x509.NewCertPool() pool.AddCert(ca) tr = &http.Transport{ TLSClientConfig: &tls.Config{RootCAs: pool},} } return &http.Client{Transport: tr} } func Wget(url,name,rootCa,rootKey string) (bool,error) { resp,err := client(rootCa,rootKey).Get(url) if err != nil { return false,err } defer resp.Body.Close() File,err := os.Create(name) if err != nil { return false,err } io.Copy(File,resp.Body) File.Close() return true,nil } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |