文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
盛夏书香|我们不能只有省省省的态度,孩子看见玩具就想买?对待金钱
-
『搞笑大喇叭』一天在路口起步熄火了,她打开双闪下了车,笑话:表姐刚拿驾照
-
怎样看待教师在上课中夹带私货(泛指人生道理)的行为
-
微信公众号“健康广东”|广东新增境外输入确诊5例、无症状感染者8例,均为广州报告
-
开一家儿童益智玩具店怎么样 杭州巧天才玩具总部地址
-
本田urv|8月销量最惨的十大轿车榜单,这个品牌占5款,或将退出中国市场
-
真想买套小户型照着它装,既可住家又可当工作室,一人独享太爽了
-
-
高超音速|全球最快导弹亮相,15分钟直达美本土,宙斯盾都来不及反应
-
花香|在家里养盆“醉酒杨妃”花姿琼花玉叶,花香醉人,比菊花还美
-
-
-
-
-
古今医案研读|古今医案研读:广中医教授周福生治萎缩性胃炎伴肠化三
-
家常老干妈豆腐,不一样的麻婆豆腐,做法超简单的下饭菜,特美味
-
-
-
『中金网』布局非接触经济,佳都科技发布商用智能人脸测温新品
-
萌主妈咪育儿经|妈妈记得要读懂,男孩为何爱“粘”妈妈?背后的心理暗示