Rotate X.509 Certificates without clusterAuthX509 Attributes on Self-Managed Clusters
Nesta página
Members of a replica set or a sharded cluster can use X.509
certificates for membership authentication to
identify other servers in the same deployment. This tutorial describes how to
perform a rolling update to rotate X.509 certificates on a cluster
that doesn't use the net.tls.clusterAuthX509
settings
to configure Distinguished Name (DN) attributes.
Observação
To perform a rolling update to rotate certificates on a cluster that uses
the net.tls.clusterAuthX509
settings or on a cluster that will use
these settings after the update, see Rotate X.509 Certificates with clusterAuthX509 Attributes on Self-Managed Clusters.
Quando um nó de servidor recebe uma solicitação de conexão, ele compara os atributos de nome distinto (DN) no campo subject
dos certificados apresentados com os atributos DN do assunto de seus próprios certificados. Os certificados corresponderão se seus assuntos contiverem os mesmos valores para os atributos Organização (O
), Unidade organizacional (OU
) e Componente de domínio (DC
). O arquivo de configuração de um servidor também pode especificar atributos DN alternativos a serem usados para a correspondência no tlsX509ClusterAuthDNOverride
parâmetro. Se os atributos DN do assunto do servidor ou o tlsX509ClusterAuthDNOverride
valor configurado corresponderem aos atributos DN do assunto do certificado apresentado, o nó do servidor tratará a conexão como um membro do cluster.
Em algumas situações, talvez seja necessário atualizar os certificados de membros para novos certificados com novos atributos de nome distinto (DN) do assunto, como se uma organização alterasse seu nome. Em uma atualização contínua, os certificados de membro são atualizados um de cada vez e seu sistema não incorre em nenhum tempo de inatividade.
Os clusters que adotam novos certificados podem usar o parâmetro para aceitar tlsX509ClusterAuthDNOverride
x.509 certificados com diferentes atributos DN de assunto durante o procedimento de rotação de certificados. Quando todos os membros usarem certificados com o novo valor, remova a substituição para começar a rejeitar os certificados agora desatualizados.
Sobre esta tarefa
Consider a replica set where each member's X.509 certificates,
set using the clusterFile
and certificateKeyFile
settings,
have subject DN attributes of "OU=10gen Server,O=10gen"
.
Um membro deste conjunto de réplicas possui o seguinte arquivo de configuração:
net.tls.mode: requireTLS net.tls.certificateKeyFile: "./mycerts/10gen-server1.pem" net.tls.CAFile: "./mycerts/ca.pem" security.clusterAuthMode: x509 net.tls.clusterFile: "./mycerts/10gen-cluster1.pem" net.tls.clusterCAFile: "./mycerts/ca.pem"
O procedimento seguinte atualiza os certificados de cada membro para novos certificados que têm atributos DN de assunto de "OU=MongoDB Server, O=MongoDB"
.
Observação
The following procedure assumes that the new X.509 certificates meet membership certificate and all other requirements and that the cluster configuration identifies peer certificates using Distinguished Name (DN) values. For more information, see Requisitos de certificado de membro.
Passos
Definir parâmetro de substituição em todos os membros.
Durante uma atualização contínua, os membros são reiniciados um de cada vez com uma nova configuração. Para permitir que os nós de servidor com os atributos DN do assunto antigo identifiquem nós com os novos atributos DN do assunto como membros do cluster, defina o parâmetro de substituição para os novos atributos DN do assunto em todos os membros em execução.
Para fazer isso, modifique o arquivo de configuração de cada servidor para definir o tlsX509ClusterAuthDNOverride
parâmetro para usar os atributos DN do assunto do novo certificado:
net.tls.mode: requireTLS net.tls.certificateKeyFile: "./mycerts/10gen-server1.pem" net.tls.CAFile: "./mycerts/ca.pem" security.clusterAuthMode: x509 net.tls.clusterFile: "./mycerts/10gen-cluster1.pem" net.tls.clusterCAFile: "./mycerts/ca.pem" setParameter: tlsX509ClusterAuthDNOverride: "OU=MongoDB Server,O=MongoDB"
Esta configuração não será levada em consideração até que você reinicie cada membro.
Reiniciar todos os membros.
Para executar uma reinicialização contínua de todos os membros, reinicie cada secundário e, em seguida, o principal.
Para cada membro secundário, conecte ao membro mongosh
e:
Use o método
db.shutdownServer()
para desligar o nó:use admin db.shutdownServer() Reinicie o membro.
Antes de reiniciar o próximo secundário, certifique-se de que este membro atingiu o
SECONDARY
estado. Para determinar o estado do membro, execute e leia o valorrs.status()
dostateStr
campo.rs.status().members
Para o nó primary, conecte ao nó mongosh
e:
Use
rs.stepDown()
para descer o membro:rs.stepDown() Use o método
db.shutdownServer()
para desligar o nó:use admin db.shutdownServer() Reinicie o membro.
Todos os servidores no conjunto de réplicas agora podem usar o parâmetro de substituição para aceitar conexões de mesmo nível de membros usando certificados com os novos atributos DN do assunto.
Modifique a configuração de todos os membros.
Atualize o arquivo de configuração de cada servidor:
Altere a configuração do para o novo
net.tls.certificateKeyFile
certificado.Altere a configuração do para o novo
net.tls.clusterFile
certificado.Configure o parâmetro
tlsX509ClusterAuthDNOverride
para utilizar os atributos DN do certificado antigo.
Por exemplo:
net.tls.mode: requireTLS net.tls.certificateKeyFile: "./mycerts/mongodb-server1.pem" net.tls.CAFile: "./mycerts/ca.pem" security.clusterAuthMode: x509 net.tls.clusterFile: "./mycerts/mongodb-cluster1.pem" net.tls.clusterCAFile: "./mycerts/ca.pem" setParameter: tlsX509ClusterAuthDNOverride: "OU=10Gen Server,O=10Gen"
Esta configuração não será levada em consideração até que você reinicie cada membro.
Reiniciar todos os membros.
Para aplicar a configuração atualizada a cada membro, execute uma reinicialização contínua dos nós do servidor repetindo o procedimento da etapa 2.
Durante esse processo, os nós que foram reiniciados com novos certificados usarão os atributos DN antigos armazenados em tlsX509ClusterAuthDNOverride
para identificar nós que apresentam certificados antigos. Os nós que ainda tiverem certificados antigos usarão o novo DN armazenado em tlsX509ClusterAuthDNOverride
para identificar os nós que apresentam novos certificados.
Remova o parâmetro de substituição de todos os membros.
Para evitar que os nós do servidor atualizados tratem os clientes que apresentam o certificado antigo como pares, remova o parâmetro tlsX509ClusterAuthDNOverride
de todos os arquivos de configuração do nó do servidor .
Por exemplo:
net.tls.mode: requireTLS net.tls.certificateKeyFile: "./mycerts/mongodb-server1.pem" net.tls.CAFile: "./mycerts/ca.pem" security.clusterAuthMode: x509 net.tls.clusterFile: "./mycerts/mongodb-cluster1.pem" net.tls.clusterCAFile: "./mycerts/ca.pem"
Esta configuração não será levada em consideração até que você reinicie cada membro.
Reiniciar todos os membros.
Para aplicar a configuração atualizada a cada membro, execute uma reinicialização contínua dos nós do servidor repetindo o procedimento da etapa 2.
Todos os servidores no conjunto de réplicas agora aceitam conexões de mesmo nível somente de nós que usam certificados que tenham os novos atributos DN do assunto.