登录
首页 >  Golang >  Go问答

“Golang自动配置HTTP CA证书,解决弹性搜索安全问题”

来源:stackoverflow

时间:2024-02-06 13:09:21 477浏览 收藏

从现在开始,努力学习吧!本文《“Golang自动配置HTTP CA证书,解决弹性搜索安全问题”》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我是 golang 新手,尝试将 golang 与弹性搜索连接,下面是我尝试使用 go (go-elasticsearch) 的默认包进行连接的代码

弹性搜索配置

var _elasticsearchconfiguration = elasticsearch.config{
    addresses: []string{
        "https://localhost:9200",
    },
    username: "elastic",
    password: "123456",
    transport: &http.transport{
        maxidleconnsperhost:   10,
        responseheadertimeout: time.second,
        dialcontext:           (&net.dialer{timeout: time.second}).dialcontext,
        tlsclientconfig: &tls.config{
          minversion:         tls.versiontls12,
        },
    },  
}

上述配置的使用

func GetAllJsonObjectDemos(responseWriter http.ResponseWriter, request *http.Request) {
    _elasticsearch, err := elasticsearch.NewClient(_elasticSearchConfiguration)
    if err != nil {
        log.Fatalf("Error creating elasticsearch client: %v", err)
    }
    elasticSearchResponse, err := _elasticsearch.Info()
    if err != nil {
        log.Fatalf("Error getting response: %s", err)
    }
    defer elasticSearchResponse.Body.Close()
    log.Println(elasticSearchResponse)

}

我真的很想知道我在这里错过了什么,感谢所有贡献者。

我期待golang和elasticsearch的连接代码或任何建议。


正确答案


要解决 certificate is not trust 错误,您可以将证书添加到 tls 配置的 RootCAs 中。

示例代码

    rootCAs, _ := x509.SystemCertPool()
    if rootCAs == nil {
        rootCAs = x509.NewCertPool()
    }

    // Read the cert file
    certs, err := os.ReadFile("localCertFile")

    // add our cert to the system pool
    rootCAs.AppendCertsFromPEM(certs)

    var _elasticSearchConfiguration = elasticsearch.Config{
        Addresses: []string{
            "https://localhost:9200",
        },
        Username: "elastic",
        Password: "123456",
        Transport: &http.Transport{
            MaxIdleConnsPerHost:   10,
            ResponseHeaderTimeout: time.Second,
            DialContext:           (&net.Dialer{Timeout: time.Second}).DialContext,
            TLSClientConfig: &tls.Config{
                RootCAs:    rootCAs,
                MinVersion: tls.VersionTLS12,
            },
        },
    }

好了,本文到此结束,带大家了解了《“Golang自动配置HTTP CA证书,解决弹性搜索安全问题”》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>