
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
国防科大,生活|小伙500天减128斤考上国防科大,网友:梦想的力量
-
-
-
阿虎汽车■Jeep指南者2020款上市,全系小马拉大车的美系SUV
-
何何爱八卦|2020年播出会爆火的4部剧,《斗罗大陆》上榜,你最想看哪一部?,原创
-
-
-
龙之队球迷:将被扣12分处罚,曾因穿拖鞋开车引热议,恒大悍将涂改机动车号牌
-
神奇的世界■留下一句“催泪遗言”后不幸离世,90岁老太患新冠后拒用呼吸机
-
-
兼顾轻薄长续航 年末哪些设计感满满的轻薄本值得买?
-
李小小白|王者荣耀:冲击铠甲改版后为何还是冷门?有没有英雄适合它呢?
-
『央视网』为中小微企业复产纾困解难,各地出台金融措施
-
徐克|“华人神探”李昌钰:为揭央视黑幕戏弄全场,一句话吓懵徐克
-
-
客厅摆放什么花最好最招财聚财 客厅摆放什么花最好最招财
-
绣球花|这三种花随手一插就能爆盆,简单浇浇水,开花似花海,花香十几里
-
苏-35|无视封海警告!美军率8国战舰“欺上门”,大批苏35飞越头顶反击
-
刘德华▲刘德华1999年香港唱片销量全年第一获得全年最高销量歌手大奖
-