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

本地主机TLS服务器连接失败原因排查求助

问题描述

背景信息

我持有一个本地生成的X.509 CA证书及对应私钥,该CA证书有两个用途:一是签署客户端证书,二是作为本地运行的HTTP+TLS Web服务器的服务器证书。

客户端使用该CA签署的证书发起连接,Go客户端配置了仅包含此CA证书的根信任池;服务器同样在Go代码中将该CA证书设置为客户端信任根。

CA证书内容

-----BEGIN CERTIFICATE-----
MIICEDCCAbegAwIBAgIUT2sxtpA9k1VVdb/DSVIE3oYANf8wCgYIKoZIzj0EAwIw
XjEtMCsGA1UEAwwkNmI5MGNhYmMtZTZhYS01NjBhLWI1YzMtODFmZWViMTRkZTUw
MS0wKwYDVQQKDCQ5MWJjMGFlOC0xMzA3LTRmMTMtODBlNC1jZWY0NjgxNjAxNDIw
HhcNMjMwOTI4MDYyNjI4WhcNMzMwOTI1MDYyNjI4WjBeMS0wKwYDVQQDDCQ2Yjkw
Y2FiYy1lNmFhLTU2MGEtYjVjMy04MWZlZWIxNGRlNTAxLTArBgNVBAoMJDkxYmMw
YWU4LTEzMDctNGYxMy04MGU0LWNlZjQ2ODE2MDE0MjBZMBMGByqGSM49AgEGCCqG
SM49AwEHA0IABBN2QUl7jzfxkhX/hOZ+uFbb+TcfqdTzgIQRZrFjaySQvQ2je8Mb
MOEB1xjISXd7m4O+fOjHvdKgP+XQjOwctbejUzBRMB0GA1UdDgQWBBTKL5QNQ/tt
AGYJUEyMH6O8we+Y9DAfBgNVHSMEGDAWgBTKL5QNQ/ttAGYJUEyMH6O8we+Y9DAP
BgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMCA0cAMEQCIHAT9FTUGnOeYUv8kbRO
OyMIiaWoIMR7G94YLVhGvyIyAiAe2q/SvkNhA6PaUGFQXL4CDFCDW4OXCPbtJ1AU
RPTZ1Q==
-----END CERTIFICATE-----

服务器TLS配置

服务器基于Go 1.21编写,配置要求并验证客户端证书:

// cert 是包含CA证书的tls.Certificate
// clientCertPool 是同样包含该CA证书的证书池
server := http.Server{
        Handler: hdlr,
        Addr:    addr,
        TLSConfig: &tls.Config{
            Certificates: []tls.Certificate{cert},
            ClientAuth:   tls.RequireAndVerifyClientCert,
            ClientCAs:    clientCertPool,
            KeyLogWriter: ssllog,
        },
    }

客户端TLS配置

Go客户端的HTTP客户端配置如下:

func HTTPClient(clientCert tls.Certificate, roots *x509.CertPool, ssllog io.Writer) *http.Client {
    tlsConfig := &tls.Config{
        Certificates: []tls.Certificate{clientCert},
        RootCAs:      roots,
        KeyLogWriter: ssllog,
    }
    tlsTransport := http.DefaultTransport.(*http.Transport).Clone()
    tlsTransport.TLSClientConfig = tlsConfig

    return &http.Client{
        Transport: tlsTransport,
    }
}

错误现象

Go客户端连接时

  • 客户端错误:Get "https://localhost:8443/v1/description": remote error: tls: internal error
  • 服务器错误:http: TLS handshake error from 127.0.0.1:55740: invalid argument

curl连接时

  • curl错误:curl: (35) LibreSSL/3.3.6: error:1404B438:SSL routines:ST_CONNECT:tlsv1 alert internal error
  • 服务器错误:http: TLS handshake error from 127.0.0.1:55792: invalid argument

两次连接的服务器错误一致。令人困惑的是,该配置一个月前可正常工作,仅CA证书可能有细微变动,其余配置均未修改。如需更多代码或Wireshark抓包数据可提供,CA服务器和TLS Web服务器的开源代码已公开。


内容的提问来源于stack exchange,提问作者Ananth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:54:51