
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
-
足球梦剧场|物美价廉!萨尔茨堡红牛出售球员价格最高的前十排行榜
-
熊本熊:造梦盒马!\盒马先生\正式出道,代言费有点特殊!
-
中新经纬|欧菲光回应被美纳入实体清单:暂未收到相关文件
-
-
男性养生|不单是男人,女人也会肾虚!多吃2黑、常揉3处,肾越来越好
-
外伤|长沙4岁男童误把精神药品当糖果 一口气吃了20粒
-
-
-
杭州网|梅城复兴好戏在后头,“美丽城镇”进入收官年
-
车壹条|北汽集团多维度秀高质量发展“肌肉”,东道主火力全开
-
光明网|【落实“六稳六保 优化营商环境”】深圳帮扶措施直达基层 带动企业创新模式销售产品
-
-
科学家▲人在去世时是否知道自己已经死了?科学家:知道,但是无法表达
-
参考消息网|绿色公寓、生态化房屋、AI城市……21世纪城市注重与自然共生
-
钱江晚报|没有人是一座孤岛:一个人较真,一群人受益
-
jdg@RNG战胜JDG,UZI直播评价小龙堡,UZI:RNG中上又经典操作了
-
百分点|国家统计局彭永涛:投资降幅明显收窄 回升态势进一步显现
-
原型车|原创贾跃亭的“希望”被拍卖,是闹剧还是窘境?
-