Menu Docs

Rotate X.509 Certificates without clusterAuthX509 Attributes on Self-Managed Clusters

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.

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.

1

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.

2

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:

  1. Use o método db.shutdownServer() para desligar o nó:

    use admin
    db.shutdownServer()
  2. 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 valor rs.status() do stateStr campo.

    rs.status().members

Para o nó primary, conecte ao nó mongosh e:

  1. Use rs.stepDown() para descer o membro:

    rs.stepDown()
  2. Use o método db.shutdownServer() para desligar o nó:

    use admin
    db.shutdownServer()
  3. 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.

3

Atualize o arquivo de configuração de cada 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"
setParameter:
tlsX509ClusterAuthDNOverride: "OU=10Gen Server,O=10Gen"

Esta configuração não será levada em consideração até que você reinicie cada membro.

4

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.

5

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.

6

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.