golang:发送带证书的http请求

时间:2014-06-30 18:12:09

标签: https go

首先,我是golang的新手。

我尝试发送https请求。我像这样创建http.Client:

func httpClient(c *Config) (httpClient *http.Client) {
cert, _ := tls.LoadX509KeyPair(c.CertFile, c.KeyFile)

ssl := &tls.Config{
    Certificates:       []tls.Certificate{cert},
    InsecureSkipVerify: true,
}

ssl.Rand = rand.Reader
return &http.Client{
    Transport: &http.Transport{
        TLSClientConfig: ssl,
    },
}
}

但结果我得到local error: no renegotiation

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

这可能是您正在访问的远程服务器的问题,但这是一个已知问题(使用Microsoft Azure服务)。

go1.4可能有一种解决方法,但在此之前,go客户端仍然不支持TLS重新协商。

相关问题:https://code.google.com/p/go/issues/detail?id=5742

答案 1 :(得分:1)

看起来好像之前不支持重新协商(和客户端证书身份验证)。这看起来已由commit https://github.com/golang/go/commit/af125a5193c75dd59307fcf1b26d885010ce8bfd

修复