首页 > 解决方案 > 如何将 PKI 证书添加到 Go HTTP 请求?

问题描述

我正在尝试将 PKI 证书添加到 HTTP 客户端,以便它发出的所有请求都经过他们正在与之交谈的服务的身份验证。我可以通过执行以下命令来实例化 HTTP 客户端:

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

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

标签: gopki

解决方案


似乎只需将Certificates属性添加到 TLS 配置中:

Certificates: []tls.Certificate{cert}

可以cert使用辅助函数创建的位置:

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

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


推荐阅读