
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
-
15跌!猪价下跌无止境|15跌!猪价下跌无止境 肉价不降反涨?平价猪肉在哪里?
-
娱星扒姐 贾玲在北京开面馆,食客吃了一碗"猪蹄面",付款时:不会再来
-
辣妹盘点酱|5.10已为基于EFI引导的RISC-V硬件提供了初步支持,Linux
-
壹方侃天下|穿阔腿裤身材圆润,太接地气,那英罕见同框家人
-
-
飞机|美国飞行比赛出意外:一飞机瞬间烧成巨大火球坠毁 现场画面公布
-
A股|IPO大跃进:新股发行太快,沪深两市主板注册制还有空间吗?
-
-
-
仙尊科技才是企业最快的获客方式,未来5-10年!裂变式营销
-
「男性」约会时香水起到什么作用?该如何正确使用呢?
-
『美国』最新民调结果出炉,美国下届总统“已成定局”,拜登无缘总统之位!
-
-
融合|财政部回应PPP与专项债融合:防控风险前提下允许地方探索
-
『太极本草』两栖蓼,见过吗?清热利湿,能治痢疾、脚浮肿、疔疮
-
-
小倩侃八卦▲摆方阵,召唤勇士,大招非常厉害,王者荣耀:新英雄蒙恬正式上线
-
火爆新闻|秦岚面临的中年困境,这剧都说透了,“谁愿看老女人跟鲜肉恋爱”
-
周到|进博会倒计时30天| 进博会指定住宿场所疫情防控工作指引已出炉,“护航进博” 联合执法进行中