当我使用exec RestApi时,我收到错误消息"x509: certificate is valid for 127.0.0.1, not xx.xx.xx.xx"



首先我用https测试,但得到400:升级响应

然后我使用 websocket 进行测试,当我使用 NewClient() 或 Dialer.Dial(url,req.标头)以创建客户端连接

它与持有者令牌有关吗?

我把它放在请求的标头中

wsurl := "wss://xx.xx.xx.xx:8080/r/projects/1a92/kubernetes:6443/api/v1/namespaces/NM/pods/testPod-546cdd8d79-7h8nv/exec?command=ls&container=testPod&stderr=true&stdin=true&stdout=true&tty=false"
u, err := neturl.Parse(wsurl)
rawConn, err := net.Dial("tcp", u.Host)
wsHeaders := http.Header{
"Authorization":                   {"Bearer "+env_bearer_token},
"Origin":                   {"https://xx.xx.xx.xx:8080/r/projects/1a92/kubernetes:6443"},
"Sec-WebSocket-Extensions": {"permessage-deflate; client_max_window_bits, x-webkit-deflate-frame"},
}
wsConn, resp, err := websocket.NewClient(rawConn, u, wsHeaders, 1024, 1024)

有什么不对吗?

它与持有者令牌有关吗?

不,与错误所说的内容有关:X.509 证书没有 xx 输出的任何 IP 的SAN条目。有几条方法可以摆脱这种情况:

  • 不再使用 IP 地址更新为证书涵盖的主机名
  • 重新颁发证书以将该 IP 包含在其 SAN 列表中
  • 更新您的Dialer,为tls.Config提供InsecureSkipVerify: true并抓住机会

最新更新