
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
台州晚报|临海一业主急匆匆赶回家,眼前景象太恶心了!发生的事让她很愤怒
-
-
『恋星座』到了中年就能多金多福的的四大生肖,年轻时候吃苦耐劳
-
君武纵横自己不要命还要拉别人下水!美国向墨西哥施压:赶紧让工人们复工
-
悠家娱乐|X3,小米10感人价悲惨让路,NFC+双扬声器小米POCO
-
-
国平军史|已越来越趋于强硬,再次枪击印度边民:尼泊尔对印政策
-
成吉思汗■中国历史上五位能力最强的皇帝:李世民垫底,成吉思汗仅第二
-
招股书|增速放缓、存货周转率下滑的海融科技拟冲刺“奶油第一股”
-
类似于东南大学的985和上海北京的211相比选择哪一个
-
-
微信|把钱放入微信钱包安全?央行给出答案,你还会将钱放在微信吗?
-
直播吧|球员归化手续仍在推进,记者:恒大打算在第二阶段召回高拉特
-
-
-
-
-
搞笑印之双|笑话这是小儿科,不料3秒钟后狂打脸,老外瞧不起中国鲁班锁
-
机型@华为 EMUI10.1发布,对比EMUI0发生了那些变化?内附详细升级机型
-
新资讯|结果我妈怀疑我是变态?”哈哈哈,“网上买了一件衣服