go - 如何将 PKI 证书添加到 Go HTTP 请求?
问题描述
我正在尝试将 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)
WherecertFile
和keyFile
是指向pem
磁盘上文件的两个字符串。正如 Peter 所提到的,您也可以实现GetClientCertificate
,但这对于实现 PKI 支持是不必要的。
推荐阅读
- visual-studio-code - 调试时的沙箱环境
- angular - 在本机存储中保存嵌套数组
- python - 自定义 x 轴范围
- java - 已定义的 RecyclerView 的空指针异常
- node.js - nodejs如何开发微服务架构
- python - 如果两列中的记录在数据集中至少两次没有一起出现,则删除 pandas 中的行
- javascript - 未为包含子行的表加载数据表
- html - 如何模态正文文本响应
- ios - 状态栏背景颜色和文本颜色在 iOS 13 beta 3 版本中不起作用
- java - 为什么 java 中的即时日期显示 1884 年之前的给定日期的时间 4:56:02Z