
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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.39万起,凯翼炫界正式上市。,林允代言
-
【新冠肺炎】截至12日北京新冠肺炎线上医生咨询平台访问量234万余人次
-
zol中关村在线海信护眼平板Q5评测:护眼不是这平板的所有特色
-
辽宁男篮|11战轰334分!30万临时工打出巨星数据,辽蜜:加薪,下季续约他
-
中国网科技|老股东亲述:易果生鲜如何从宠儿走到破产重整?
-
-
-
『向阳愿景TB』你只知道广州的早茶,却不懂它的宵夜
-
大腕儿娱乐1 中国却研究发展的最好,日本网友怒斥:明明是我们最先研究
-
【影之书数码】最有性价比的8+128GB千元机,还支持NFC,从1799降至1329
-
乐居财经:代价约1.51亿港元,泛海酒店购入面值2180万美元恒大票据
-
NBA官网|湖人将获1200万美元收入,打剩下8场常规赛
-
【猫眼娱乐V】安娜·温图尔儿子确诊新冠,曾陪英国女王看秀,被授予王室勋章,原创
-
-
可口可乐|再来一瓶无法就近兑奖:魔爪饮料被罚20万
-
-
-
-
本·拉登|拉登的妻子和情人众多, 揭秘他身边的女人们(组图)
-
「易度时尚」炫酷和粉嫩,谁是火箭少女腿精?,杨超越吴宣仪同穿“肥宅T恤”