Visão geral
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
tls.Config
para configurar suas opções de TLSInformações adicionais fornecem links para recursos e documentação da API para os tipos e métodos mencionados neste guia
Dica
Para saber mais sobre o TLS, consulte a página da Wikipedia sobre Transport Layer Security.
Habilitar TLS
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
paratrue
em sua connection stringPassando uma estrutura
tls.Config
vazia para o métodoSetTLSConfig()
ao criar uma instânciaClientOptions
Selecione entre as seguintes abas Connection String e ClientOptions para ver uma amostra de código correspondente:
Observação
Se você usar um registro SRV DNS quando se conectar ao MongoDB especificando a modificação +srv
em sua string de conexão, você habilita o TLS na conexão por padrão. Para desativá-lo, defina o valor do parâmetro tls
ou ssl
como false
em sua string de conexão ou objeto ClientOptions
.
Para saber mais sobre o comportamento da conexão quando você usa uma seedlist DNS, consulte a seção Formato de conexão SRV no MongoDB Server.
Para visualizar uma lista completa de opções de cliente, consulte os guias Especificar opções de conexão.
Configurar certificados
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
Usar certificados válidos em produção
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. |
Certificados de referência em um cliente
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 campo TLSConfig
da sua instância do ClientOptions
para uma estrutura do tls.Config
para configurar sua conexão TLS. As estruturas tls.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 tls.Config
, importe os pacotes crypto/tls
e crypto/x509
. Em seguida, crie uma instância de estrutura tls.Config
e defina os campos de estrutura relevantes para sua configuração, conforme mostrado na seção a seguir.
Para saber mais sobre a estrutura tls.Config
, consulte a documentação da API tls.Config.
Exemplo
Este exemplo executa a seguinte ação para criar uma instância do tls.Config
e uma instância do Client
com TLS habilitado:
Cria variáveis para referenciar os caminhos de arquivo do certificado
Cria um pool de arquivos CA usando o método
x509.NewCertPool()
e anexa o conteúdo do arquivo CACarrega os arquivos de certificado do cliente usando o método
tls.LoadX509KeyPair()
Instancia uma estrutura
tls.Config
e define os camposRootCAs
eCertificates
Passa a instância
tls.Config
para o métodoSetTLSConfig()
para definir o campoTLSConfig
doClientOptions
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)
Opção insegura
Na sua instância do tls.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.
Informações adicionais
Para saber mais sobre como habilitar o TLS em uma conexão, consulte a seguinte documentação no manual do MongoDB Server :
Documentação da API
Para saber mais sobre os métodos e tipos mencionados neste guia, consulte a documentação da API abaixo: