Este tutorial mostra como configurar o TLS em um conjunto de réplicas autogerenciado. Selecione uma abordagem com base no fato de você desejar usar o mTLS intra-cluster, necessário para habilitar a autenticação X.509 entre os nós.
Importante
Essas etapas se aplicam a deployments autogerenciados do MongoDB . Os clusters do MongoDB Atlas usam TLS por padrão. Se você usar o Cloud Manager ou o Ops Manager, configure o TLS por meio de sua ferramenta de gerenciamento de implementação.
Antes de começar
Antes de começar, verifique se você tem o seguinte:
Um conjunto de réplicas autogerenciado no qual cada nó tem um nome de host, como
localhostoumongo0.example.com. O TLS não está configurado atualmente em nenhum nó no conjunto de réplicas.Certificados de servidor TLS para cada nó que você obteve seguindo o tutorial Obter certificados de servidor, como
mongo0.pem.Um certificado CA para assinar os certificados do servidor, como
ca.pem.Acesso ao arquivo de configuração
mongodem cada nó.Acesso
mongosha.
Passos
Siga este procedimento se não precisar de mTLS intra-cluster ou autenticação X.509 entre nós de servidor.
Crie um arquivo-chave
Cada nó usa o conteúdo de um keyfile para autenticar outros nós da implantação. Crie um keyfile usando o seguinte comando:
openssl rand -base64 756 > /etc/ssl/mongodb/keyfile chmod 400 /etc/ssl/mongodb/keyfile
Copie o arquivo-chave para cada nó em sua implantação. Certifique-se de restringir as permissões no arquivo-chave para que apenas o processo mongod possa ler o arquivo.
Edite o arquivo de configuração em cada nó
Em cada nó, localize e abra seu arquivo de configuração mongod. Se o arquivo não existir, crie-o. Adicione as seguintes opções TLS. Use caminhos absolutos para os arquivos de certificado.
Por exemplo, o arquivo de configuração do seu nó primário é semelhante ao seguinte:
net: tls: mode: allowTLS certificateKeyFile: /etc/ssl/mongodb/mongo0.pem CAFile: /etc/ssl/mongodb/ca.pem allowConnectionsWithoutCertificates: true security: clusterAuthMode: keyFile keyFile: /etc/ssl/mongodb/keyfile setParameter: tlsWithholdClientCertificate: true
modedefinido comoallowTLSaceita conexões TLS, mas não as exige, para que os nós possam concluir uma reinicialização contínua sem interromper a replicação.certificateKeyFileespecifica o certificado do nó. Substitua o nome do arquivo pelo arquivo de chave de certificado do nó específico que você está configurando.CAFileespecifica o certificado CA que assinou o certificado do nó.allowConnectionsWithoutCertificatespermite que os clientes se conectem sem fornecer um certificado TLS.clusterAuthModedefinido comokeyFilepermite que os nós se autentiquem usando um arquivo de chave.keyFileespecifica o arquivo de chave que os nós usam para se autenticar uns aos outros.tlsWithholdClientCertificateimpede que o nó apresente seu certificado de servidor ao fazer conexões de saída com outros nós no cluster. Isso é necessário porque impede que os nós usem certificados de autenticação de servidor para autenticação de cliente, especialmente se seus certificados não incluírem o EKUclientAuth.
Reinicie os membros do conjunto de réplicas
Reinicie o processo mongod para aplicar a nova configuração TLS. Para aplicar a configuração sem tempo de inatividade, reinicie os nós de forma contínua.
Em cada hospedar para sua implantação, começando com os secundários e terminando com o nó primário, execute o seguinte:
sudo systemctl restart mongod
Para verificar se a reinicialização contínua foi concluída com sucesso, execute o seguinte comando em cada hospedar:
sudo systemctl status mongod
Reinicie os membros do conjunto de réplicas
Reinicie o processo mongod para aplicar a nova configuração TLS. Para aplicar a configuração sem tempo de inatividade, reinicie os nós de forma contínua.
Em cada hospedar para sua implantação, começando com os secundários e terminando com o nó primário, execute o seguinte:
sudo systemctl restart mongod
Para verificar se a reinicialização contínua foi concluída com sucesso, execute o seguinte comando em cada hospedar:
sudo systemctl status mongod
Siga este procedimento para configurar seu conjunto de réplicas para usar mTLS intra-cluster e autenticação X.509 entre nós.
Edite o arquivo de configuração em cada nó
Importante
Seus certificados de nó devem incluir serverAuth e clientAuth EKU para mTLS intra-cluster. Se seus certificados não clientAuth incluírem, consulte o Aviso técnico sobre as alterações da política da autoridade de certificação pública que afetam o mTLS para obter opções de configuração alternativas.
Em cada nó, localize e abra seu arquivo de configuração mongod. Se o arquivo não existir, crie-o. Adicione as seguintes opções TLS. Use caminhos absolutos para os arquivos de certificado.
Por exemplo, o arquivo de configuração do seu nó primário é semelhante ao seguinte:
net: tls: mode: allowTLS certificateKeyFile: /etc/ssl/mongodb/mongo0.pem CAFile: /etc/ssl/mongodb/ca.pem allowConnectionsWithoutCertificates: true clusterAuthX509: attributes: O=MongoDB security: clusterAuthMode: x509
modedefinido comoallowTLSaceita conexões TLS, mas não as exige, para que os nós possam concluir uma reinicialização contínua sem interromper a replicação.certificateKeyFileespecifica o certificado do nó. Substitua o nome do arquivo pelo arquivo de chave de certificado do nó específico que você está configurando.CAFileespecifica o certificado CA que assinou o certificado do nó.allowConnectionsWithoutCertificatespermite que os clientes se conectem sem fornecer um certificado TLS.net.tls.clusterAuthX509.attributesespecifica os atributos de certificado X.509 que identificam um nó como nó do cluster, em vez de um cliente regular. Para atributos de certificado necessários, consulte Certificado X.509 do nó.clusterAuthModedefinido comox509permite que os nós se autentiquem usando certificados X.509.
Reinicie os membros do conjunto de réplicas
Reinicie o processo mongod para aplicar a nova configuração TLS. Para aplicar a configuração sem tempo de inatividade, reinicie os nós de forma contínua.
Em cada hospedar para sua implantação, começando com os secundários e terminando com o nó primário, execute o seguinte:
sudo systemctl restart mongod
Para verificar se a reinicialização contínua foi concluída com sucesso, execute o seguinte comando em cada hospedar:
sudo systemctl status mongod
Reinicie os membros do conjunto de réplicas
Reinicie o processo mongod para aplicar a nova configuração TLS. Para aplicar a configuração sem tempo de inatividade, reinicie os nós de forma contínua.
Em cada hospedar para sua implantação, começando com os secundários e terminando com o nó primário, execute o seguinte:
sudo systemctl restart mongod
Para verificar se a reinicialização contínua foi concluída com sucesso, execute o seguinte comando em cada hospedar:
sudo systemctl status mongod
Inspecione os logs para verificar sua configuração TLS
Após a reinicialização contínua ser concluída, inspecione os logs em cada nó para verificar se o TLS está configurado corretamente. Seus logs devem incluir o seguinte conteúdo para verificar se a autenticação mTLS e X.509 estão configuradas corretamente:
"msg":"Successfully authenticated", "attr": { "isClusterMember":true, "mechanism":"MONGODB-X509", "user":"CN=mongo1.example.com,O=MongoDB,L=New York City,ST=New-York,C=US" }
Você deve ver uma mensagem de log semelhante para cada um dos outros dois nós em seu conjunto de réplicas. Por exemplo, se você observar os logs em mongo0, deverá ver mensagens semelhantes às acima para mongo1 e mongo2.
Próximos passos
Para aprender como se conectar à sua implantação com um aplicativo cliente, continue em Conectar-se a um conjunto de réplicas habilitado para TLS.