症状
HTTPS 调用返回 x509: certificate signed by unknown authority。它常在本机正常、在 CI 或容器中失败,指向的是信任库而非服务端。
诊断
检查服务端下发的证书链与客户端信任库:
openssl s_client -connect api.internal:443 -showcerts </dev/null
ls /etc/ssl/certs/ca-certificates.crt
若签发者是内部 CA,客户端就必须信任该 CA。
修复
在代码中信任指定的 CA,或将其装入系统信任库:
pool := x509.NewCertPool()
pem, _ := os.ReadFile("/etc/ssl/internal-ca.pem")
pool.AppendCertsFromPEM(pem)
client := &http.Client{Transport: &http.Transport{
TLSClientConfig: &tls.Config{RootCAs: pool},
}}
在精简镜像中安装 ca-certificates 并加入该 PEM。
验证
在容器内重跑请求;TLS 握手成功、响应正常返回,且信任库中确实存在预期的 CA。