ポートスキャンを防ぐために、ライブラリから外れ、この時間は一般的には、私たちのデータベースは、ネットワークアクセスのために設定されているが、理由は異なるサービス展開アーキテクチャの、時には公衆ネットワークの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