
文章插图
通常我们的数据库都配置为内网访问 , 但由于业务部署架构的不同 , 有时也需要通过公网访问 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】
推荐阅读
-
足球|引援或许就这样,但曼联还有重要的转会操作!对比皇马速度太慢
-
-
『吉利帝豪』上海二手车市场遇冷,奥迪A6卖2万都没人要,网友:谁有胆子买?
-
一哥街拍|吊带裙大秀蝴蝶背,性感又撩人,杨采钰演绎法国复古少女风
-
-
香港知名女星近照冻龄,前夫家暴还婚内出轨,当单亲妈妈努力养家
-
天下快谈|为啥通信基站要“伪装”起来?移动、联通、电信:被逼无奈
-
-
根系|朋友送了一棵很大的多肉口红,但没有根系,怎样才能让它长根呢?
-
明修栈道暗度陈仓想出这一计策的是谁,明修栈道暗渡陈仓是谁的计谋--
-
数码人科技|谷歌霸气官宣!即便安卓系统免费开源:也能抓住国产手机厂商命脉
-
5G手机5G双响炮!iQOO Z1x搭载120Hz竞速屏,5000mAh解决续航问题
-
明朝|“空印案”是明朝洪武四大案之一,因为这个案朱元璋斩杀了上万官员,这是真的吗?
-
同居闹得人尽皆知之后再换个人结婚和结婚又离婚的二婚有啥区别
-
全国能源信息平台|广东8月电力现货结算试运行期间电力用户注册事项的说明
-
-
「片仔癀」中国股市:判断股票次日涨跌情况,只要看懂“主力资金”就足够了
-
冰箱放在空调外机旁边有没有问题 空调内机放冰箱旁边可以吗
-
-
电脑使用技巧网线接口坏了怎么办 毕亚兹USB转RJ45转换器体验评测