文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
-
沈翰之|年轻女子行刑前被迫临时结婚,实拍伊朗60年前神秘的女子监狱
-
【5G】4G升5G,变更后才知手机不支持?营业员一句“别录了”竟逃离现场
-
电科技|Note 20 Ultra实机照曝光 用料十足边框更窄,三星
-
【金钥匙】机械育苗成为辣椒种植产业振兴的“金钥匙”
-
-
-
河南最无奈的火车站,每天只有一趟普速火车,堪称最荒凉火车站
-
啥叫小规模食品经营者、煎饼摊还能摆吗?官方解释来了
-
-
-
-
远康军事:俄罗斯真是敢想敢干,技术和资金双重困难,万吨战舰今年就要开工
-
悠家娱乐 X3,小米10无奈下跌黯然神伤,支持六个万花筒小米POCO
-
唐僧师徒5人,其实在取经路上被佛祖偷偷换掉两人,这两人是谁
-
肖战|肖战在内娱荷尔蒙天花板票选中断层领先,为了角色不断自我突破!
-
泡脚好处多多,但泡时要注意方式,否则会给人带来危害
-
-
-
睿辰知道|双眼皮和美瞳线一起做,你的眼睛会放电!,听说