
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
美容|什么精华液美白去黄效果好?这些精华液让素颜肌肤也能白到发光
-
七彩云南普洱茶,为您推荐几款口感不错的七彩云南普洱茶
-
面条凉了之后粘在一起怎么办,凉面怎么才能不粘在一起-
-
[贝鲁特港]“就像世界末日!”贝鲁特港大爆炸前后对比(图)
-
46岁吴彦祖近照|46岁吴彦祖近照 这发际线也就男神能hold得住
-
石油|美国这下慌了,石油将要用黄金直接结算,美国霸权或将结束!
-
-
孕妈酱|一儿一女的父母沉默了,''生儿生女''都相同?20年后就见分晓了
-
-
麦田军事观察|俄罗斯已经投重金建立支援设施,信心十足!猎人无人机还没有定型
-
小松影视|换个角度看《爱我就别想太多》,有些问题还是很值得探讨的
-
娱乐掮客|我逗她,让她夸我帅。女儿白我一眼,幽默笑话:早上送女儿上学
-
吊带裙@心疼徐璐,单身后身材越发瘦了,穿紧身吊带裙撑不起出现好几道褶
-
-
股票|国元证券上半年信用减值损失2亿 应付职工薪酬增108%
-
时报新药观察牛股是怎样找到的?——谈如何寻找具有长期价值的公司并持续跟踪
-
多多游戏控|剑神超一线,鬼泣沦为四线下水道,DNF:韩服9月34职业排名
-
明星恋情|盘点2020年公开道歉的十大明星,看看都有谁?
-
-