
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
萌宝保卫战|回家后发现宝宝手里有东西,妈妈纠结是否还回去,一家三口逛超市
-
张占梅|历史上真实的李建成是怎样一个人?他为创建唐朝做了什么贡献?
-
直播吧|阿森纳手球没回放,曼晚质疑VAR手球判罚:曼联手球判了点
-
-
blackpink|“半年五百个热搜,是头猪也红了!”
-
梁山唯一能领兵打仗的女将,武功高强结果却被板砖拍死
-
张志明|我的特区故事| 他带领蛇口这个渔村走出困境,还扬帆出海闯世界
-
中建一局五公司解码落地《中建一局项目党支部“五个价值创造点”考核表》
-
赛事圈|67分创赛季最低纪录,CBA第二强进攻火力哪去了?,新疆吃到首败
-
豫事说法栏目|淡定拿出车内物品后潇洒转身:不要了,一女子骑无牌摩托被查扣
-
美军|中国在军事上究竟还落后于美俄多少?看看罗援少将是咋说的
-
-
-
-
-
-
-
陵桥|甘肃握桥,陇原先民千年不朽的发明,至今仍在各地使用
-
世界500强榜单背后:看懂一家公司,你必须理解的3个维度
-
虎牙直播|这就是虎牙和斗鱼合并的原因?某直播平台发展迅猛威胁太大