如何在Go HTTP请求中添加PKI证书?

时间:2018-12-14 10:49:36

标签: go pki

我正在尝试将PKI证书添加到HTTP客户端,以便对其发出的所有请求都进行身份验证,以使其与之通信。我可以通过执行以下操作来实例化HTTP客户端:

client := &http.Client{
    Transport: &http.Transport{
        Proxy:                 http.ProxyFromEnvironment,
        TLSClientConfig: &tls.Config{
            // TLS Implementation
        }
    }
}

这使用默认的RoundTripper实现,其中包括TLS配置部分。但是,TLS配置似乎在客户端和服务器之间共享。我需要添加以下哪些设置才能调用其他PKI服务?

1 个答案:

答案 0 :(得分:1)

似乎只需要向TLS配置添加Certificates属性:

Certificates: []tls.Certificate{cert}

可以使用辅助函数在cert中创建的地方:

cert, err := tls.LoadX509KeyPair(*certFile, *keyFile)

certFilekeyFile是两个字符串,它们指向磁盘上的pem文件。如Peter所述,您也可以实现GetClientCertificate,但这对于实现PKI支持是不必要的。