当我使用exec RestApi时,出现错误消息“ x509:证书对127.0.0.1有效,而不对xx.xx.xx.xx有效”。

时间:2018-07-09 12:40:29

标签: kubernetes

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

然后我使用websocket进行测试,并在我使用NewClient()或Dialer.Dial(url)时收到“无法连接到控制台:x509:证书对127.0.0.1有效,对xx.xx.xx.xx无效” ,req.Header)创建客户端conn

这与不记名令牌有关吗?

我将其放在请求的标题中

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)

有什么问题吗?

1 个答案:

答案 0 :(得分:0)

  

这与不记名令牌有关吗?

否,与错误的确切含义有关​​:对于xx-ed出的IP,X.509证书没有SAN条目。有几种方法可以解决这种情况:

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