
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
辰龙军事|公开曾击落全球鹰防空导弹,技术让俄罗斯也疑惑,伊朗又叫板美国
-
只要是炖排骨,切记不要焯水,教你3个小妙招,不腥不柴真好吃
-
钟铭聊科学 还能通过指纹解锁吗?,没有生命迹象的人
-
车家号|这款20万级合资SUV告诉你啥叫物超所值!,要的就是质价比
-
【】山东人表达对世人的爱,一个重要的尺度就是,要够大!
-
遇上|春天,遇上此虾从不手软,一次买五六斤,放冰箱冻起来,特省事
-
池余|国产汽车发动机为何比不上西方国家?原因:汽车工业起步太晚
-
张艺谋:谢园会把快乐带给别人,他模仿我和凯歌等人至今难忘
-
麒麟和凤凰|在中国神话里,辈分最高的4大神兽,你知道哪几个呢?
-
大众报业·海报新闻|今年“双11”快递怎么这么快?看各家快递公司是怎么做到的
-
老百姓聊生活 吴京蒋雯丽上榜,王宝强本色出演,7位“拍戏不化妆”的明星
-
『』云浪潮|“爆发”的直播电商站上风口,资本极速入局
-
#积食#孩子积食爱生病,多半是脾虚!一个中医食疗方,消食化积还能健脾
-
年代|东北70-80年代下酒菜,“老村长下酒菜”,老一辈喝酒人的挚爱
-
「解放网」怕遭不测已为特朗普找好替身,美末日计划曝光
-
贵州交通广播1048人解决就业问题,25条县乡公路提前完成路面提升!幸福路通了
-
新榜| 新榜情报,知乎开展整治恶意营销号专项行动;快手起诉10位淘宝卖家
-
-
长发|卡其色连衣裙,深棕黄色系小波浪卷长发,凸显出端庄雅致的气质范
-
四线城市|河南非常“低调”的城市,曾是世界第一大城市,现在成为了四线