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, que é necessário para habilitar a509 autenticação X. entre 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á atualmente configurado em nenhum nó do conjunto de réplicas.Certificados de servidor TLS para cada nó obtidos seguindo o tutorial Obter certificados de servidor,
mongo0.pemcomo.Um certificado CA para assinar os certificados do servidor , como
ca.pem.Acesso ao
mongodarquivo de configuração em cada nó.Acesso
mongosha.
Passos
Siga este procedimento se você não precisar de autenticação mTLS ou X.509 intra-cluster entre nós de servidor .
Criar um arquivo-chave
Cada nó utiliza o conteúdo de um arquivo de chave para autenticar outros membros da implantação. Crie um arquivo de chave 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 seu sistema. Certifique-se de restringir permissões no arquivo de chave para que somente o processo mongod possa ler o arquivo.
Editar o arquivo de configuração em cada nó
Em cada nó, localize e abra seu mongod arquivo de configuração do. Se o arquivo não existir, crie-o. Adicione as seguintes opções de TLS. Use caminhos absolutos para os arquivos de certificado.
Por exemplo, o arquivo de configuração do nó primário tem a seguinte aparência:
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 da 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 utilizam para autenticar uns aos outros.tlsWithholdClientCertificateimpede que o nó apresente seu certificado de servidor ao fazer conexões de saída para 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 aclientAuthEKU.
Reinicie os membros do conjunto de réplicas
Reinicie o processo do 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 host do seu sistema, começando com os nós secundários e terminando com o nó primary, 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 host:
sudo systemctl status mongod
Atualize a configuração para impor o TLS
Depois que todos os nós forem reiniciados com êxito com o TLS ativado, atualize o arquivo de configuração em cada nó. Altere net.tls.mode de allowTLS para requireTLS para impor conexões criptografadas para todos os clientes e membros:
net: tls: mode: requireTLS
Reinicie os membros do conjunto de réplicas
Reinicie o processo do 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 host do seu sistema, começando com os nós secundários e terminando com o nó primary, 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 host:
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.
Editar 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 mongod arquivo de configuração do. Se o arquivo não existir, crie-o. Adicione as seguintes opções de TLS. Use caminhos absolutos para os arquivos de certificado.
Por exemplo, o arquivo de configuração do nó primário tem a seguinte aparência:
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 da 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 membro do cluster, em vez de um cliente normal. Para atributos de certificado exigidos, consulte Membro X.509 Certificado.clusterAuthModedefinido comox509permite que os nós autentiquem-se usando509 certificados X..
Reinicie os membros do conjunto de réplicas
Reinicie o processo do 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 host do seu sistema, começando com os nós secundários e terminando com o nó primary, 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 host:
sudo systemctl status mongod
Atualize a configuração para impor o TLS
Depois que todos os nós forem reiniciados com êxito com o TLS ativado, atualize o arquivo de configuração em cada nó. Altere net.tls.mode de allowTLS para requireTLS para impor conexões criptografadas para todos os clientes e membros:
net: tls: mode: requireTLS
Reinicie os membros do conjunto de réplicas
Reinicie o processo do 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 host do seu sistema, começando com os nós secundários e terminando com o nó primary, 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 host:
sudo systemctl status mongod
Inspecione os registros para verificar a configuração do TLS
Após a conclusão da reinicialização contínua , inspecione os registros em cada nó para verificar se o TLS está configurado corretamente. Seus registros devem incluir o seguinte conteúdo para verificar se a autenticação mTLS e X.509 está configurada 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 registro semelhante para cada um dos outros dois nós em seu conjunto de réplicas. Por exemplo, se você examinar os registros em mongo0, deverá ver mensagens semelhantes às acima para mongo1 e mongo2.
Próximos passos
Para saber como se conectar à sua implantação com um aplicação cliente , continue para Conectar-se a um conjunto de réplicas habilitadas para TLS.