go - 如何将 PKI 证书添加到 Go HTTP 请求?

标签 go 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)

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

关于go - 如何将 PKI 证书添加到 Go HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53778253/

相关文章:

go - 从第一个 CRLF 到最后读取一个 []byte

sorting - 有没有办法避免对结构 slice 执行完整的 sort.Interface?

go - 导出名称以小写字母开头的函数

go - 用于显示 golang 在线 API 文档的 VS Code 键盘快捷键?

ssl - NGINX HTTPS 服务器在 .crt 和 .key 文件上出现问题

go - 使用 client-go api 回滚部署

android - encode() 私钥在 "AndroidKeyStore"返回 null

java - 在 Unix 上从 PKI 源 anchor 更新 Java 信任证书存储

windows - 无法在 Windows Server 2008 R2 上设置企业证书颁发机构

authentication - 如何从断开的网络生成 SSL 客户端证书?