
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
水星|秋冬裤装如何穿搭?适合职场的裤装搭配示范,简约大方利落干练
-
万历时十五年在线阅读|万历时十五年在线阅读答:世人对世间万物的认知
-
女生喜欢什么样的男生(大多数女生喜欢什么样的男生)
-
Lava Lava店铺音乐,点燃训练激情,燃烧卡路里
-
-
-
『举行』四川西昌市经久乡森林火灾遇难勇士追悼会在西昌举行
-
鸿图之下|【攻略】《鸿图之下》个人势力如何升级,最快提升个人势力方法
-
萌娃小包子|这4件事要靠妈妈,爸爸不管用,倒数第一逆袭清华:养育男孩
-
-
-
-
-
【奇星坊】世界上唯一造型奇特的大楼:直立长度达4000英尺
-
新氧美容APP|吊打鞠婧祎的真·四千年美少女,方脸甜到极致的美貌是开挂了吧!
-
中国新闻网|工信部:疫情中软件业务收入同比增长8.6%
-
袁隆平|市民在医院门口摆三束水稻告慰袁老:长沙市民鸣笛送别袁隆平
-
-
英雄联盟|英雄联盟无限乱斗模式你认为哪个英雄最弱,为什么?
-
顺义|这6所211大学,只要考上一点不比985大学差,毕业后根本不愁就业