
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
国际金融报|全球五大石油巨头二季度集体亏损!沙特阿美CEO:最坏的情况可能已经过去了
-
建行App上线数字货币钱包 数字金融时代将带给你哪些影响?
-
-
成都2例境外输入病例详情公布:自开罗乘同一航班抵达
-
-
省长|地级市市长升任副省长,打破常规的背后,有着这些共同点
-
阿古朵|阿古朵连招用错输一半,小学生喜欢乱来,梦飞却用这个18连胜上国服第一
-
央视网|?美国国家飓风中心:得克萨斯州和路易斯安那州将面临飓风威胁
-
小米|小米有品开卖99元剃须刀:5层悬浮刀片 比手术刀还要薄
-
朱一龙|赵今麦新片失利后,这个6月只剩下朱一龙的新电影撑场了
-
#玫瑰#亚洲最大的鲜花市场在昆明,玫瑰3毛一朵,网红直播卖花
-
黄叶|养文竹,谨记2多、2少,不黄叶,还不断冒新芽
-
奔驰c180最新价格?奔驰c200l和c180l哪个保
-
-
-
-
喜指|俗语“宅子有3喜,家中出人才”,你知道3喜指的是啥吗
-
-
狗不理|一家老字号的大溃败:从狗不理变成“Go Believe”开始
-