ゴーでTLS接続にMongoDBを使用する方法

ポートスキャンを防ぐために、ライブラリから外れ、この時間は一般的には、私たちのデータベースは、ネットワークアクセスのために設定されているが、理由は異なるサービス展開アーキテクチャの、時には公衆ネットワークのMongoDBデータベース経由のアクセスを必要とする、あなたは、TLSへのMongoDBのアクセスを設定する必要が行くことどのようにそれを達成する必要がありますか?

頼ります

MongoDBのインスタンスはTLS公衆ネットワークアクセスを配置
するMongoDBに行く車グローバルサイン/ MgOの

実装コードを行きます:

package model

import (
    "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
}

上記のコードによって、我々は、パブリックネットワークで接続されたMongoDBのインスタンスTLS接続、操作およびネットワーク内の接続のデータベースにすることができます。
http://www.songjiayang.com/posts/mongo-connect-with-tls-in-go

おすすめ

転載: blog.51cto.com/51reboot/2408660