Menu Docs
Página inicial do Docs
/ / /
Driver GO
/ /

Habilitar e configurar TLS

Nesta página

  • Visão geral
  • Habilitar TLS
  • Configurar certificados
  • Certificados de referência em um cliente
  • Exemplo
  • Informações adicionais
  • Documentação da API

Neste guia, você verá como usar o protocolo TLS para proteger sua conexão com um MongoDB deployment. Para configurar sua conexão para usar TLS, habilite a opção TLS e forneça seus certificados para validação ao criar um cliente.

Este guia inclui as seguintes seções:

  • Habilitar TLS descreve maneiras de habilitar o TLS em sua conexão

  • Configurar certificados descreve os certificados necessários para configurar o TLS

  • Certificados de Referência em um Cliente fornece um exemplo de como criar uma estrutura Config para configurar suas opções de TLS

  • Informações adicionais fornecem links para recursos e documentação da API para os tipos e métodos mencionados neste guia

Dica

Você pode habilitar o TLS em uma conexão com sua instância do MongoDB de uma das seguintes maneiras:

  • Definindo a opção tls para true em sua connection string

  • Passando uma estrutura Config vazia para o método SetTLSConfig() ao criar uma instância ClientOptions

Selecione entre as seguintes abas Connection String e ClientOptions para ver uma amostra de código correspondente:

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

Observação

Se sua string de conexão usar um registro DNS SRV incluindo o prefixo mongodb+srv, o TLS será habilitado na sua conexão por padrão.

Para obter uma lista completa das opções de cliente , consulteOpções de conexão .

Para iniciar com êxito uma solicitação de TLS, seu aplicativo deve apresentar certificados criptográficos para provar sua identidade. Os certificados do seu aplicativo devem ser armazenados como arquivos PEM para habilitar o TLS durante a conexão.

Importante

Para uso em produção, recomendamos que seu deployment do MongoDB use certificados válidos gerados e assinados pela mesma autoridade de certificação. Para testar, seu sistema pode usar certificados auto assinados.

A lista a seguir descreve os componentes que seu cliente deve apresentar para estabelecer uma conexão habilitada para TLS:

Componente TLS
Descrição
Autoridade de certificação (CA)
Uma ou mais autoridades de certificação para confiar ao fazer uma conexão TLS.
Certificado de cliente
Um certificado digital que permite ao servidor verificar a identidade do seu aplicativo para estabelecer uma conexão de rede criptografada.
Chave de certificado
O arquivo de chave privada de certificado do cliente. Essa chave geralmente é incluída no próprio arquivo de certificado.
Senha
A senha para descriptografar a chave de cliente privada se estiver criptografada.

Você deve fazer referência aos seus certificados em seu objeto ClientOptions para que o servidor possa validá-los antes que o cliente se conecte. Recomendamos que você defina o TLSConfig campo da instância ClientOptions como uma estrutura Config para configurar sua conexão TLS. As estruturas Config são nativas do Go e permitem que você mantenha todas as suas opções de TLS em um único objeto reutilizável.

Para criar uma instância do Config , importe os pacotes crypto/tls e crypto/x509 . Em seguida, crie uma instância de estrutura Config e defina os campos de estrutura relevantes para sua configuração.

Na sua instância do Config , você pode definir campos opcionais para configurar o TLS na sua conexão. Para fins de teste, você pode definir o campo InsecureSkipVerify como true.

Aviso

Definir o campo InsecureSkipVerify como true desabilita a validação tanto do certificado quanto do nome do host.

Especificar essa opção em um ambiente de produção torna seu aplicativo inseguro e potencialmente vulnerável a certificados expirados e processos externos que se apresentam como instâncias de cliente válidas.

Para saber mais sobre a estrutura Config , consulte a documentação da API tls.Config.

Este exemplo executa a seguinte ação para criar uma instância do Config e uma instância do Client com TLS habilitado:

  1. Cria variáveis para referenciar os caminhos de arquivo do certificado

  2. Cria um pool de arquivos CA usando o método x509.NewCertPool() e anexa o conteúdo do arquivo CA

  3. Carrega os arquivos de certificado do cliente usando o método tls.LoadX509KeyPair()

  4. Instancia uma estrutura Config e define os campos RootCAs e Certificates

  5. Passa a instância Config para o método SetTLSConfig() para definir o campo TLSConfig do ClientOptions

// Enable TLS on a connection by using the Go driver
package main
import (
"context"
"crypto/tls"
"crypto/x509"
"os"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func main() {
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)
// Connects to MongoDB with TLS enabled
client, err := mongo.Connect(context.TODO(), opts)
if err != nil {
panic(err)
}
defer func() {
if err = client.Disconnect(context.TODO()); err != nil {
panic(err)
}
}()
}

Para saber mais sobre como habilitar o TLS em uma conexão, consulte a seguinte documentação de manual do servidor:

Para saber mais sobre os métodos e tipos mencionados neste guia, consulte a documentação da API abaixo:

Voltar

Compactação de rede