首先我用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
并抓住机会