如何将 PKI 证书添加到 Go HTTP 请求?
How do I add a PKI certificate to a Go HTTP request?
我正在尝试将 PKI 证书添加到 HTTP 客户端,以便它发出的所有请求都经过身份验证以访问它们正在与之通信的服务。我可以通过执行来实例化一个 HTTP 客户端:
client := &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
TLSClientConfig: &tls.Config{
// TLS Implementation
}
}
}
这使用默认的 RoundTripper
实现,其中包括一个 TLS
配置部分。但是,TLS 配置似乎在客户端和服务器之间共享。我需要添加哪些设置才能调用其他 PKI 服务?
似乎只需要将 Certificates
属性添加到 TLS 配置中:
Certificates: []tls.Certificate{cert}
其中 cert
可以使用辅助函数创建:
cert, err := tls.LoadX509KeyPair(*certFile, *keyFile)
其中 certFile
和 keyFile
是两个指向磁盘上 pem
文件的字符串。正如 Peter 所提到的,您也可以实现 GetClientCertificate
,但这对于实现 PKI 支持是不必要的。
我正在尝试将 PKI 证书添加到 HTTP 客户端,以便它发出的所有请求都经过身份验证以访问它们正在与之通信的服务。我可以通过执行来实例化一个 HTTP 客户端:
client := &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
TLSClientConfig: &tls.Config{
// TLS Implementation
}
}
}
这使用默认的 RoundTripper
实现,其中包括一个 TLS
配置部分。但是,TLS 配置似乎在客户端和服务器之间共享。我需要添加哪些设置才能调用其他 PKI 服务?
似乎只需要将 Certificates
属性添加到 TLS 配置中:
Certificates: []tls.Certificate{cert}
其中 cert
可以使用辅助函数创建:
cert, err := tls.LoadX509KeyPair(*certFile, *keyFile)
其中 certFile
和 keyFile
是两个指向磁盘上 pem
文件的字符串。正如 Peter 所提到的,您也可以实现 GetClientCertificate
,但这对于实现 PKI 支持是不必要的。