
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
-
猫眼娱乐V|呼吸困难送医院,当妈心切称想生4个?曝郭富城旧爱冻卵后太操劳
-
[Andy无泪]商家不给你拿柜台上的,而是去仓库拿货?,为什么去实体店买电脑
-
-
-
临安检察:商版《庆渝年》之抢“传国玉玺”有没有用?
-
Techweb■2015 年至 2019 年全球人工智能投资报告:美国公司吸走了 56%
-
-
公路施工标准化测量钢筋直螺纹套筒连接工艺及质量检查
-
-
摄影师|奇闻:新郎拍婚纱照只拍到两只脚,新娘不满意,看成片服了
-
-
肌酐升高时,人体会出现哪些症状?肌酐386中医治疗降为正常值
-
『石军帅说娱乐』才艺表演唱了歌,打赏礼物的却寥寥无几,胡海泉直播试水不太成功
-
血管 让血管一通到底的食物是它们,记得每天吃1种,清除血管垃圾毒素
-
-
好事儿娇娘|为了延续儿子的性命,在佛前叩首三千回,民间故事:初为人母
-
云南将建新高铁,全长107公里,共设5个站点,经过你的家乡吗
-
-
游戏提莫酱|IVL秋季赛:Weibo迎战MRC,梦之女巫或成为胜负手