Habilitar e configurar TLS
Nesta página
Visão geral
Neste guia, você aprenderá a usar o protocolo TLS para proteger sua conexão com o MongoDB deployment. Para configurar sua conexão para usar TLS, habilite a opção TLS e, opcionalmente, forneça seus certificados para validação no arquivo config/database.php
do seu aplicativo.
Dica
Para saber mais sobre o TLS, consulte o verbete da Wikipedia sobre Transport Layer Security.
Habilitar TLS
No arquivo config/database.php
do seu aplicativo, você pode habilitar o TLS em uma conexão com seu sistema do MongoDB de uma das seguintes maneiras:
Definindo a opção
tls
paratrue
em sua connection stringDefinindo a opção
tls
paratrue
na propriedadeoptions
da sua entrada de conexãomongodb
Selecione entre as seguintes abas Connection String e Connection Options para ver uma amostra de código correspondente:
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => 'mongodb://<hostname>:<port>/?tls=true', 'database' => 'myDB', ] ]
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => '<connection string>', 'database' => 'myDB', 'options' => [ 'tls' => true, ], ] ]
Para ver uma lista completa de opções de conexão, consulte Opções de conexão .
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.
Configurar certificados
Para iniciar com êxito uma solicitação de TLS, seu aplicação pode precisar 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 pode 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. Você pode passar o caminho deste arquivo para a opção tlsCAFile . |
Certificado de cliente | Um certificado digital que permite que o servidor verifique a identidade do seu aplicativo para estabelecer uma conexão de rede criptografada. Você pode passar o caminho deste arquivo para a opção tlsCertificateKeyFile . |
Chave de certificado | O arquivo de chave privada de certificado do cliente . Essa chave geralmente é incluída no próprio arquivo de certificado. Se você precisar fornecer este item, o certificado e a chave devem ser concatenados em um arquivo que você pode passar para a opção tlsCertificateKeyFile . |
Senha | A senha para descriptografar a chave de cliente privada se estiver criptografada. Você pode passar o caminho deste arquivo para a opção tlsCertificateKeyFilePassword . |
Certificados de Referência
Se necessário, você deve fazer referência aos seus certificados ao configurar a conexão mongodb
para que o servidor possa validá-los antes que o cliente se conecte.
Recomendamos que você faça referência aos seus certificados e defina outras opções de TLS na propriedade options
da configuração de conexão em vez de na connection string. Isso melhora a legibilidade do código em seu aplicativo.
Defina as seguintes opções na propriedade options
para fazer referência aos seus certificados:
tlsCAFile
tlsCertificateKeyFile
tlsCertificateKeyFilePassword
Observação
Para fins de teste, você pode definir as seguintes opções como true
para desativar a validação:
tlsAllowInvalidCertificates
tlsAllowInvalidHostnames
Ou você pode definir a opção tlsInsecure
como true
para definir implicitamente ambas as opções anteriores.
Especificar essas opções em um ambiente de produção pode tornar seu aplicativo inseguro. Para saber mais, consulte a referência Opções de conexão no manual do servidor MongoDB.
O exemplo a seguir configura uma conexão com o TLS ativado:
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => '<connection string>', 'database' => 'myDB', 'options' => [ 'tls' => true, 'tlsCAFile' => '<path to CA certificate>', 'tlsCertificateKeyFile' => '<path to private client certificate>', 'tlsCertificateKeyFilePassword' => '<path to client key passphrase>', ] ] ]
Informações adicionais
Para saber mais sobre como definir as opções de URI, consulte a documentação da API do MongoDB\\Driver\\Manager::__construct().
Para saber mais sobre como habilitar o TLS em uma conexão, consulte a seguinte documentação de manual do servidor: