Golang 如何跳过证书认证连接云搜索服务
问题描述
问题分析
解决方案
参考文档
评论区

Golang 如何跳过证书认证连接云搜索服务

Go
推荐
视频直播
了解详情 
为企业和个人提供安全、稳定、专业的云端直播服务
问题描述

使用go-elasticsearch连接云搜索服务,报错如下: alt

问题分析

通过https协议访问云搜索服务的时候,证书颁发的IP SANS中并没有包含云搜索服务对外暴露的IP地址111.xxx.xxx.xxx

解决方案

通过跳过证书认证,使用https协议连接与云搜索服务通信。具体示例代码如下:

1.编写go.mod文件导入go-elasticsearch依赖包。

[root@iv-a8j78jje1ylrx9p4t93t my-elasticsearch-app]# cat go.mod
module my-elasticsearch-app
go 1.16
require github.com/elastic/go-elasticsearch/v7 v7.16.0

2.编写main.go文件实现连接测试连接。

package main

import (

"crypto/tls"

"crypto/x509"

"flag"

"fmt"

"github.com/elastic/go-elasticsearch/v7"

"io/ioutil"

"log"

"net"

"net/http"

"time"

)

func main() {

var err error

//insecure := flag.Bool("insecure-ssl", false, "Accept/Ignore all server SSL certificates")

flag.Parse()

// Get the SystemCertPool, continue with an empty pool on error

rootCAs, _ := x509.SystemCertPool()

if rootCAs == nil {

rootCAs = x509.NewCertPool()

}

certs, err := ioutil.ReadFile("/etc/logstash/es_ca.cer")   // /etc/logstash/es_ca.cer为服务页面中下载的ca文件

if err != nil {

log.Fatalf("Failed to append %q to RootCAs: %v", certs, err)

}

if ok := rootCAs.AppendCertsFromPEM(certs); !ok {

log.Println("No certs appended, using system certs only")

}

cfg := elasticsearch.Config{

Addresses: []string{

"https://100.xxx.xxx.xxx:9200",      //地址为云搜索服务访问的内网或者外网地址

},

Username: "admin",

Password: " 密码",

Transport: &http.Transport{

MaxIdleConnsPerHost: 10,

ResponseHeaderTimeout: time.Second,

DialContext: (&net.Dialer{

Timeout: 30 * time.Second,

KeepAlive: 30 * time.Second,

}).DialContext,

TLSClientConfig: &tls.Config{

InsecureSkipVerify: true,    //跳过证书认证

RootCAs: rootCAs,

},

},

}

client, err := elasticsearch.NewClient(cfg)

if err != nil {

log.Fatal(err)

}

fmt.Println(client.Info())

}

3.查看输出结果如下:

[root@iv-a8j78jje1ylrx9p4t93t my-elasticsearch-app]# go run main.go
[200 OK] {
  "name" : "es-master-s6avp377dc08jgct-2",
  "cluster_name" : "s6avp377dc08jgct",
  "cluster_uuid" : "Zsa3tv2LSU-jIwJrXMidGA",
  "version" : {
    "number" : "7.10.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "747e1cc71def077253878a59143c1f785afa92b9",
    "build_date" : "2021-01-13T00:42:12.435326Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
 <nil>

参考文档

[1] https://github.com/elastic/go-elasticsearch

如果您有其他问题,欢迎您联系火山引擎技术支持服务

363
0
0
0
关于作者
所属团队号:
相关资源
字节跳动 XR 技术的探索与实践
火山引擎开发者社区技术大讲堂第二期邀请到了火山引擎 XR 技术负责人和火山引擎创作 CV 技术负责人,为大家分享字节跳动积累的前沿视觉技术及内外部的应用实践,揭秘现代炫酷的视觉效果背后的技术实现。
相关产品
推荐
视频直播
为企业和个人提供安全、稳定、专业的云端直播服务
了解详情 
消息队列 RabbitMQ版
消息队列 RabbitMQ版兼容开源 RabbitMQ,提供高可用、低延迟、高并发的消息服务
了解详情 
短信服务
提供安全可靠、便捷高效的全球短信服务,服务范围覆盖国内外230多个国家和地区,适用于推广短信、通知短信、验证码短信等多种场景,稳定触达客户
了解详情 
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论