
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
上海少见的“纸片楼”,在网络上意外走红,如今每天吸引大量游客
-
「刘安」翼装女神刘安生前曾担任平面模特!海量写真曝光!美得有层次!
-
太平洋电脑网 太阳轨道飞行器首次通过近日点将近距离捕捉太阳图像
-
-
末位评论|曝泰森复出战对手确定!对决另一传奇拳王,9月12日正式上演
-
都美竹|都美竹和闺蜜闹翻,昔日“站台照”被曝,穿低胸超短裙羞涩站一旁
-
-
符合条件可申请国家对糖尿病和高血压的专项补贴。 糖尿病补助
-
环球时报|揭露靠抹黑中国“成名”的郑国恩:反华势力的政治傀儡
-
-
-
【手艺人】为什么壶内会有一条条划痕,手艺人来告诉你!
-
「蛋蛋懂车」周口拟建五个停车场!赶快来看看在不在你家附近
-
「出轨」已婚女扮演“知性女博士”出轨已婚男,迷得对方抛家弃子狂砸20余万
-
-
国际连连看|美疾控中心再警告:会播种新冠病毒致感染激增,疫情下暴乱持续
-
无锡|苏南地下赌场调查追踪:庄家、荷官等50人落网,在逃人员被通缉
-
G时尚|看看女明星们的的夏日卷发演绎,或大气甜美,或酷飒帅气
-
-