ssl 获取“https://zzzztower.zzzz.com/api/v2/hosts/“:x509:证书依赖于旧版通用名字段,请改用SAN

myzjeezk  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(109)

我尝试使用此处定义的API从ansible tower获取主机列表,我使用ansible tower URL -〉https://zzzztower.zzzz.com/api/v2/hosts/和承载令牌-〉aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
当我使用postman来调用API时,我得到了一个正确的响应,但是当我使用golang代码时,我得到了错误
获取“https://ansibletower.micron.com/api/v2/hosts/“:x509:证书依赖于旧版通用名字段,请改用SAN
下面是我的代码:

package globals

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

// var AUTH_TOKEN string = os.Getenv("AUTH_TOKEN")

func GetAnsibleHosts() (string, error) {

    url := "https://zzzztower.zzzz.com/api/v2/hosts/"
    method := "GET"

    client := &http.Client{}
    req, err := http.NewRequest(method, url, nil)

    if err != nil {
        return "", fmt.Errorf("Error creating request: %v", err)
    }

    bearerToken := "aaaaaaaaaaaaaaaaaaaaaaaaaaa"

    // Add the Bearer Auth token to the request
    req.Header.Add("Authorization", "Bearer "+bearerToken)

    res, err := client.Do(req)
    if err != nil {
        fmt.Println(err)
        return "", err
    }
    defer res.Body.Close()

    body, err := ioutil.ReadAll(res.Body)
    if err != nil {
        fmt.Println(err)
        return "", err
    }
    // fmt.Println(string(body))
    return string(body), err
}

我试着在google上找到这个错误,但没有找到太多帮助。很少有文章提到使用GODEBUG=x509ignoreCN=0,但它不起作用。
我真的很感激你的帮助。

iqjalb3h

iqjalb3h1#

要跳过此检查,我们可以使用InsecureSkipVerify并将其设置为true
大概是这样的

// Create a new transport with InsecureSkipVerify set to true
transport := &http.Transport{
    TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}

// Create a new client using the transport
client := &http.Client{Transport: transport}

然后这个client可以用来得到响应。
PS:这对我很有效,但其他人请建议一个更好的方法,如果有的话。

相关问题