I want to create a tls client using the net/http in GO how can I create it given the ca certificates?
1条回答 默认 最新
- dongqun5769 2016-07-26 07:50关注
package main import ( "crypto/tls" "crypto/x509" "flag" "io/ioutil" "log" "net/http" ) var ( certFile = flag.String("cert", "someCertFile", "A PEM eoncoded certificate file.") keyFile = flag.String("key", "someKeyFile", "A PEM encoded private key file.") caFile = flag.String("CA", "someCertCAFile", "A PEM eoncoded CA's certificate file.") ) func main() { flag.Parse() // Load client cert cert, err := tls.LoadX509KeyPair(*certFile, *keyFile) if err != nil { log.Fatal(err) } // Load CA cert caCert, err := ioutil.ReadFile(*caFile) if err != nil { log.Fatal(err) } caCertPool := x509.NewCertPool() caCertPool.AppendCertsFromPEM(caCert) // Setup HTTPS client tlsConfig := &tls.Config{ Certificates: []tls.Certificate{cert}, RootCAs: caCertPool, } tlsConfig.BuildNameToCertificate() transport := &http.Transport{TLSClientConfig: tlsConfig} client := &http.Client{Transport: transport} // Do GET something resp, err := client.Get("https://localdev.local:8443") if err != nil { log.Fatal(err) } defer resp.Body.Close() // Dump response data, err := ioutil.ReadAll(resp.Body) if err != nil { log.Fatal(err) } log.Println(string(data)) }
Mostly borrowed from this gist. And here is a great article to work with TLS in Go: https://ericchiang.github.io/tls/go/https/2015/06/21/go-tls.html
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥40 复杂的限制性的商函数处理
- ¥15 程序不包含适用于入口点的静态Main方法
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码