
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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年相差10岁,夫唱妇随的模样像极了夫妻
-
片约不断,却演啥毁啥,《骄阳伴我》这个“戏混子”该醒醒了
-
被书友奉为经典的3本小说:看了3章就沉沦,难怪让人念念不忘
-
国际米兰撸报韧韧|天空体育:切尔西即将以一年合约签下蒂亚戈-席尔瓦
-
悠悠爱时尚|悠悠穿搭:废弃的白色T恤长袖单衣不要扔,系起来搭肩上,时尚又百搭
-
美丽一点 奈何自己都还走不稳,非常暖心,暖哭的一幕:弟弟想牵着姐姐
-
渌水早读TB|无法回头,但是可以转弯,人生是一张单程票
-
大S|汪小菲发飙,大s回应看似体面,实则却被聪明误
-
-
南国今报|16岁妈妈未婚生子,外公带娃4天去世!更郁闷的是…
-
爱游小胖鹅|各游戏通行证盘点,最香的竟然是炉石传说?玩家:这皮肤能吹一年
-
-
「我国」我国最大的盐场,产量占全国海盐产量1/4,是我国四大盐场之一
-
-
-
-
【洛雨悦乐】清洗时掉色了还能吃?专家却说这种才是好桑葚!,吃桑葚有讲究
-
-
高马尾|头一回见那英这打扮,剪齐刘海涂紫唇彩上综艺,像变了个人认不出