You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang使用X509密钥对发起HTTP请求时持续收到403禁止访问响应的问题求助

Golang使用X509密钥对发起HTTP请求时持续收到403禁止访问响应的问题求助

各位好,我现在碰到个棘手的问题:用Golang通过OpenSSL生成的X509密钥对发起HTTP请求时,服务器一直返回403 Forbidden响应,排查了好一阵都没找到原因,想请大家帮忙看看。

先贴出我的代码片段:

var pemFile string = "/etc/files/cert/pemFile.pem"
var keyFile string = "/etc/files/cert/keyFile.key"

type loggingTransport struct {
    Transport http.RoundTripper
}

func (t *loggingTransport) RoundTrip(req *http.Request) (*http.Response, error) {
    resp, err := t.Transport.RoundTrip(req)
    if err != nil {
        return nil, err
    }

    if req.TLS != nil {
        // 打印客户端证书的Subject DN
        for _, cert := range req.TLS.PeerCertificates {
            fmt.Println("Client Certificate Subject DN:", cert.Subject)
        }
    }
    return resp, err
}

func main() {
    // 加载客户端证书和密钥
    cert, err := tls.LoadX509KeyPair(pemFile, keyFile)
    if err != nil {
        fmt.Printf("Error loading client certificate and key: %v\n", err)
        return
    }

    // 后续是配置HTTP客户端、设置TLS配置并发起请求的逻辑
    // ...
}

我已经做了这些排查:

  • 确认证书和密钥文件的路径是正确的,tls.LoadX509KeyPair没有返回错误
  • 从日志里能看到客户端证书的Subject DN被正常打印出来,说明证书确实被发送到了服务器
  • 用curl带着相同的证书和密钥请求同一个服务器接口是可以成功的,所以证书本身应该是没问题的

有没有大佬能帮我分析下可能哪里出问题了?比如Golang的TLS配置是不是有什么我没注意到的细节?

备注:内容来源于stack exchange,提问作者ismailzakky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 10:43:04