登录
首页 >  Golang >  Go问答

使用 TLS 配置获取客户端证书

来源:stackoverflow

时间:2024-03-19 14:45:29 411浏览 收藏

使用 TLS 配置获取客户端证书时,go http 客户端会对不同端点进行相互 TLS 验证。可以通过为每台服务器创建 http.Client 进行通信或为每个客户端证书创建客户端来满足要求。不过,这些方法存在一些限制,例如难以设置 http.Transport 参数或动态更新证书。深入研究 Golang-1.14.5 源代码后,发现 http.Transport.DialTLSContext 可能满足要求,因为它允许在请求级别创建 TLS 连接,证书来自上下文。

问题内容

我正在使用 go http 客户端对不同端点(或不同服务器的不同客户端证书)进行相互 tls 验证。

不确定是否可以使用 getclientcertificate()。我对此有点困惑。因为certificaterequestinfo没有服务器端点或主机信息。

  • 加密货币/tls
    getclientcertificate func(*certificaterequestinfo) (*certificate, error) // go 1.8
  • 源代码 https://github.com/golang/go/blob/master/src/crypto/tls/common.go#l526

如果有人能举个这样的例子就太好了?或者也许有其他方法可以满足这个要求?

go version go1.13.3 linux/amd64

解决方案


@marc 提出的一种方法是为每台服务器创建一个 http.Client 进行通信(或者至少为每个客户端证书创建一个客户端)。

但限制是很难为 http.Transport 设置参数,就像 MaxIdleConns 一样。另一个限制是动态更新或使用新证书。

通过深入研究Golang-1.14.5源代码,也许http.Transport.DialTLSContext可以满足要求,可以在请求级别创建TLS连接(证书来自上下文)。有人对这种方法有什么想法或意见吗?一个缺点是自定义 DialTLSContext() 函数有点复杂,因为底层函数已经很好地实现了。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>