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
相关产品推荐
相关产品推荐

