
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
「iPhone」富士康允诺:iPhone 12有望按期发布
-
-
搞笑段子趣图|翻车了吧!看着摔的还不轻!,搞笑gif-真会玩
-
-
「黄峥」黄峥主动散财700亿,不想当首富,想要低调,马云躺赢?
-
【成都商报红星新闻】 12岁男孩清明前车祸去世 他的肾脏挽救了两个同龄孩子的生命,
-
事实证明,“油王”翻身的黄晓明将要迎来事业的第二春
-
5G|紫光展锐推出5G新品牌“唐古拉” 6nm 5G处理器7月上市
-
-
张纪中|小31岁杜星霖疑秘密转移3亿房产,张纪中被曝婚变?本人火速回应
-
北京卫视|霸屏霸榜霸热搜,北京卫视资源推介会又搞大事
-
大话NBA|湖人、篮网想引进比尔,但要等到比尔球衣在奇才退役,愿望很美好
-
-
-
富豪|美国科技股暴跌,前十大科技富豪身家一天缩水440亿美元
-
-
冒出|小须鲸张开大口从船边冒出,拍摄者吓得一屁股坐下
-
-
-
明星婚姻|著名晶女郎孟瑶宣布离婚!前夫是内衣品牌老总,两人育有一个儿子