
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 MongoDB 数据库 , 此时为了防止被端口扫描和脱库 , MongoDB 需要配置为 TLS 访问 , 那在 Go 中应该如何实现呢?
依赖
- 配置了 TLS 公网访问的 MongoDB 实例
- Go 的 MongoDB 驱动 globalsign/mgo
Go 实现代码:package modelimport ( "crypto/tls" "crypto/x509" "errors" "github.com/globalsign/mgo" "io/ioutil" "log" "net")func main() { dsn := "mongodb://user:password@host/database" dialInfo, err := mgo.ParseURL(dsn) if err != nil {log.Panic(err) } // read pemfile data pemData, err := ioutil.ReadFile("./pemfile") if err != nil {log.Panic(err) } roots := x509.NewCertPool() if !roots.AppendCertsFromPEM(pemData) {log.Panic(errors.New("failed to parse root certificate")) } // set tls config tlsConfig := &tls.Config{RootCAs: roots,InsecureSkipVerify: true, } // update dialserver with tls Dial dialInfo.DialServer = func(addr *mgo.ServerAddr) (net.Conn, error) {conn, err := tls.Dial("tcp", addr.String(), tlsConfig)if err != nil {log.Println(err)}return conn, err } session, err := mgo.DialWithInfo(dialInfo) if err != nil {log.Panic(err.Error()) } // db operation with session}通过以上代码 , 我们就能通过公网连接 tls 的 MongoDB 实例 , 当连接上后 , 其数据库的操作和内网连接一致 。
【如何在 Go 中使用 TLS 连接 MongoDB】
推荐阅读
-
手机大魔王:华为苹果OPPO新机集中上市,试用过后我选择了它
-
-
王者荣耀|王者荣耀:英雄武器会随着皮肤变化,有一位专属武器被称为“血条消失术”
-
马国明婚前最后一次露面!否认与郑嘉颖吵架,伴娘高海宁拒抢花球
-
#小萌的辣妈日记#留错老十岁!,你适合“披发”还是“扎发”?看这3点就对了
-
美剧|5部被严重低估的冷门黄暴系列美剧,可别说你都看过
-
-
-
戚戚爱八卦镜头扫到腰线那刻,男粉沸腾了,baby穿破烂上衣秀“巴掌腰”
-
IT新经济|丰田汽车(TM.US)与亚马逊(AMZN.US)AWS共建云服务平台,发力网联车技术
-
新民晚报|仗着能背出爸爸10位手机号就独自上街,普陀警方帮助4岁走失女童寻回父母
-
-
桃酥话少女|理由也是没谁了,英国提醒国人不要接近中国菜市场,
-
「黑狗」【原创】我把它藏起来,保住它的命。它知恩图报,一次次牺牲自己,回报于我
-
-
暖风吹怀|《浪姐》才刚刚成团,三位落选姐姐就有新身份,难怪被质疑有剧本
-
-
茉莉茶的功效与作用有哪些可排毒养颜抗菌消炎还抗衰老
-
范冰冰:“利”字右边是把刀:范冰冰卷入530亿大骗局!
-
生科医学|俄罗斯总统普京称接种疫苗后抗体检测呈阳性:感觉良好