
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
王者荣耀|王者荣耀天云:貂蝉打不出伤害?那是7个细节处理不到位
-
-
白夜追凶里面关宏宇跟关宏峰是凶手么,白夜追凶关宏宇和刘音什么关系-
-
-
『霓虹的望着』欠了一身网贷如何上岸?教你四步上岸法
-
-
盗窃取保候审一般怎么判,盗窃案取保候审中检察院会怎么样处理
-
风险投资@创投日报 | 「灵动科技」获1亿元B+轮融资,「云鲸智能」完成近亿元B轮融资,以及今天值得关注的早期项目
-
先生|佳隆股份:股东林长春先生已减持公司股份合计2458万股
-
饮食减肥|抹茶控注意!抹茶只有这样喝,才能强力速瘦!
-
张薇事件风波升级!川大校长一夜白头,女方近照曝光满面春光
-
请问大家,北京四中普通班和北京师大附钱学森班哪个更好啊
-
-
美人哒|用宽松T恤叠穿束腰,效果意外很时髦,钟丽缇的胖也是一种美
-
-
-
应采儿二胎剖腹产过程|【模范夫妻】应采儿二胎剖腹产过程曝光 陈小春:上次没拍到被骂了7年
-
天狼星▲王者荣耀:6月份新皮总览!天狼星曝新皮肤,云中君源梦系列上线
-
-