Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Go Driver
/

接続での TLS の有効化

このガイドでは、TLS プロトコルを使用して MongoDB 配置への接続を保護する方法を学習できます。 TLS を使用するように接続を構成するには、 TLS オプションを有効にし、クライアントを作成するときに検証用の証明書を提供します。

このガイドには、次のセクションが含まれています。

  • TLSを有効にする では、接続で TLS を有効にする方法について説明します。

  • 「証明書の構成」では、TLS を構成するために必要な証明書について説明します。

  • クライアントでの参照証明書では、TLS オプションを構成するための tls.Config構造体を作成する方法の例が紹介されています。

  • 追加情報では、このガイドで言及されている型とメソッドのリソースとAPIドキュメントへのリンクを提供します

Tip

次のいずれかの方法で、MongoDB インスタンスへの接続で TLS を有効にできます。

  • 接続stringで tls オプションを true に設定する

  • ClientOptionsインスタンスの作成時に空のtls.Config構造体をSetTLSConfig()メソッドに渡す

Connection StringClientOptions次の タブと タブから選択すると、対応するコード サンプルが表示されます。

uri := "mongodb://<hostname>:<port>?tls=true"
opts := options.Client().ApplyURI(uri)
client, _ := mongo.Connect(opts)
uri := "<connection string>"
opts := options.Client().ApplyURI(uri).SetTLSConfig(&tls.Config{})
client, _ := mongo.Connect(opts)

注意

MongoDBに接続するときに 接続stringで +srv 変更を指定して DNS SRV レコードを使用する場合は、接続で TLS がデフォルトで有効になります。 これを無効にするには、接続stringまたは ClientOptions オブジェクトで tls または ssl パラメータの値を false に設定します。

DNS シードリストを使用する場合の接続動作の詳細については、 MongoDB Serverの SRV 接続形式 セクションを参照してください。

クライアントオプションの完全なリストを表示するには、接続オプションの指定ガイドを参照してください。

TLS 要求を正常に開始するには、アプリケーションが ID を証明するために暗号化証明書を提示する必要があります。 接続時に TLS を有効にするには、アプリケーションの証明書が PEM ファイルとして保存されている必要があります。

重要

本番環境で有効な証明書を使用する

実稼働環境で使用する場合は、MongoDB の配置に、同一の認証局によって生成および署名された有効な証明書を使用することをお勧めします。 テスト用に、配置は自己署名証明書を使用できます。

次のリストでは、TLS 対応接続を確立するためにクライアントが提示する必要があるコンポーネントを説明します。

TLS コンポーネント
説明

認証局(CA)

TLS 接続を行う場合、信頼する 1 つ以上の証明書機関。

クライアント証明書

暗号化されたネットワーク接続を確立するためにアプリケーションの ID をサーバーが確認できるようにするデジタル証明書。

証明書鍵

クライアント証明書秘密キー ファイル。 このキーは、多くの場合、証明書ファイル自体に含まれています。

パスフレーズ

プライベートクライアントキーが暗号化されている場合、復号化するためのパスワード。

クライアントが接続する前にサーバーが証明書を検証できるように、ClientOptionsオブジェクトで証明書を参照必要があります。

TLS 接続を構成するには、ClientOptionsインスタンスの TLSConfigフィールドをtls.Config 構造体に設定することをお勧めします。tls.Config 構造体はGoのネイティブであり、すべての TLS オプションを単一の 再利用可能なオブジェクトに保持できます。

tls.Configインスタンスを作成するには、crypto/tls パッケージと crypto/x509 パッケージをインポートします。次に、次のセクションに示すように、tls.Config 構造体インスタンスを作成し、構成に関連する構造体フィールドを設定します。

tls.Config構造体の詳細については、 tls.Config API ドキュメントを参照してください。

この例では、次のアクションを実行して、TLS が有効になっているtls.ConfigインスタンスとClientインスタンスを作成します。

  1. 証明書ファイルパスを参照するための変数を作成します

  2. x509.NewCertPool()メソッドを使用して CA ファイル プールを作成し、CA ファイルの内容を追加します

  3. tls.LoadX509KeyPair()メソッドを使用してクライアント証明書ファイルを読み込みます

  4. tls.Config構造体をインスタンス化し、 フィールドと フィールドを設定しますRootCAsCertificates

  5. tls.ConfigインスタンスをSetTLSConfig()メソッドに渡して、 ClientOptionsTLSConfigフィールドを設定します

caFile := "<path to CA certificate>"
certFile := "<path to public client certificate>"
keyFile := "<path to private client key>"
// Loads CA certificate file
caCert, err := os.ReadFile(caFile)
if err != nil {
panic(err)
}
caCertPool := x509.NewCertPool()
if ok := caCertPool.AppendCertsFromPEM(caCert); !ok {
panic("Error: CA file must be in PEM format")
}
// Loads client certificate files
cert, err := tls.LoadX509KeyPair(certFile, keyFile)
if err != nil {
panic(err)
}
// Instantiates a Config instance
tlsConfig := &tls.Config{
RootCAs: caCertPool,
Certificates: []tls.Certificate{cert},
}
uri := "<connection string>"
// Sets TLS options in options instance
opts := options.Client().ApplyURI(uri).SetTLSConfig(tlsConfig)

tls.Configインスタンス内で、接続上で TLS を構成するための任意のフィールドを設定できます。 テスト目的では、 InsecureSkipVerifyフィールドをtrueに設定できます。

警告

InsecureSkipVerifyフィールドをtrueに設定すると、証明書とホスト名の両方の検証が無効になります。

実稼働環境でこのオプションを指定すると、アプリケーションは安全でなくなり、有効なクライアントインスタンスとみなされる有効なクライアントインスタンスや期限切れの証明書や外部プロセスに対して脆弱になる可能性があります。

接続で TLS を有効にする方法の詳細については、 MongoDB Serverマニュアルの次のドキュメントを参照してください。

このガイドで言及されているメソッドとタイプの詳細については、次のAPIドキュメントを参照してください。

戻る

使用中の暗号化

項目一覧