- 前面的介绍我们理解了数字签名等知识,同时学习了 OpenSSL 生成私钥和证书并验证
- 之前提过我们基于 BitTorrent 协议开发了一个 docker 镜像分发加速插件
- 中间涉及到了配置 docker 的代理
- 下面我们简单介绍下 Golang 的 http.transport 配置了网络代理后的网络行为并编写一个简单的代理转发,加深理解代理转发行为
1. http.Transport 配置代理
![]()
func TLSTransport(caFile string) (*http.Transport, error) {
tr := &http.Transport{TLSClientConfig: &tls.Config{}, Proxy: http.ProxyFromEnvironment}
if len(caFile) == 0 {
tr.TLSClientConfig.InsecureSkipVerify = true
return tr, nil
}
ca, err := ioutil.ReadFile(caFile)
if err != nil {
return nil, fmt.Errorf("read CA file failed: %v", err)
}
pool := x509.NewCertPool()
pool.AppendCertsFromPEM(ca)
tr.TLSClientConfig.RootCAs = pool
return tr, nil
}
View Code