
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
-
「说服力」四川未来“吃香”的城市,GDP排名省内第三,或成下一个成都
-
-
可乐鸡翅这样做太简单,烹饪不加一滴油,营养又美味,孩子特爱吃
-
游宅玩家|元气骑士:瓦克恩枪有几种形态?菜鸟说2种,大神却说有3种
-
水星|“职业”俱乐部动不动就“退出”?昨晚武汉卓尔险些重演历史闹剧
-
央视新闻客户端|金正恩向朝鲜军队指挥成员授予纪念手枪
-
-
▲懂行人买西瓜,只是拍打还不行,记住4个诀窍,小贩对你刮目相看
-
未来未来喂|热血传奇:百万收购天龙圣衣,为何这件装备如此珍贵
-
小泽非人哉:靠近麒麟会有好运,小泽却是个例外,被麒麟惹怒两次
-
体育知道分子|郎平还不启用新人吗?,女排最薄弱环节出现!就靠2老将苦苦支撑
-
做法|红烧豆腐最简单的家常做法,鲜嫩多汁又入味,我家1周吃4次
-
个股|最新出炉!8月17日沪深股通净流入57.13亿,其中9.731亿买了平安银行
-
-
文娱马后炮漫威:无限手套也分质量?钢铁侠打造的手套质量最差
-
『北通外设』特别体验版》4月30日免费玩一周 本体将开启7折促销,《喷射战士2
-
-
ZAKER生活|曼妙身姿尽显优雅时尚,夏天舒适穿搭学习了!淡黄色薄纱上衣+宽松直筒裤
-
海淀公安|解救40位被“洗脑”老人,北京警方酒店内抓获18名骗子