Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/

x.509

Nesta página

  • Autoridade de certificação
  • Certificados de Cliente x.509
  • Certificados de Nó x.509

O MongoDB suporta autenticação de certificado x.509 para autenticação de clientes e autenticação interna dos nós de conjuntos de réplicas e clusters fragmentados.

x. A autenticação do certificado 509 requer umaconexão TLS/SSL segura.

Para uso em produção, seu MongoDB deployment deve usar certificados válidos gerados e assinados por uma autoridade de certificação. Você ou sua organização podem gerar e manter uma autoridade de certificação independente ou usar certificados gerados por fornecedores de TLS de terceiros. Obter e gerenciar certificados está além do escopo desta documentação.

Para autenticar em servidores, os clientes podem usar certificados x.509 em vez de nomes de usuário e senhas.

Os certificados do cliente devem ter as seguintes propriedades:

  • Uma única Autoridade de Certificação (CA) deve emitir os certificados para o cliente e para o servidor.

  • Os certificados do cliente devem conter os seguintes campos:

    keyUsage = digitalSignature
    extendedKeyUsage = clientAuth
  • Cada usuário único do MongoDB deve ter um certificado exclusivo.

  • Um cliente x. O assunto do certificado 509 , que contém o Nome Distinto (DN), deve ser diferente dos assuntos do membro x.509 certificados.

    Importante

    Se o assunto de um certificado x.509 do cliente corresponder aos atributos O, OU e DC do certificado x.509 do membro (ou tlsX509ClusterAuthDNOverride, se definido) exatamente, a conexão do cliente será aceita, todas as permissões serão concedidas e uma mensagem de aviso será exibida no registro.

    Somente certificados x509 de membros do cluster devem usar as mesmas combinações de atributos O, OU e DC.

    Se a implementação do MongoDB tiver tlsX509ClusterAuthDNOverride definido, o cliente x.509 o assunto do certificado não deve corresponder a esse valor.

    Se a implementação do MongoDB tiver tlsX509ClusterAuthDNOverride definido, o cliente x.509 o assunto do certificado também deve ser diferente desse valor.

  • O certificado x.509 não pode expirar.

    O mongod / mongos registra um aviso na conexão se o certificado x.509 apresentado expirar dentro de 30 dias do horário do sistema host mongod/mongos. Consulte a página Avisos de expiração dos certificados x.509 para obter mais informações.

Para autenticar com um certificado de cliente, você deve primeiro adicionar o valor do subject certificado de cliente como um usuário MongoDB. Cada x. O certificado de cliente 509 corresponde a um único usuário do MongoDB. Você não pode usar um único certificado de cliente para autenticar mais de um usuário do MongoDB .

Adicione o usuário no reconhecimento de data center do $external. O reconhecimento de data center $external é o reconhecimento de data center de autenticação para o usuário.

Para usar sessões de cliente e garantias de consistência causal com usuários de autenticação $external (usuários Kerberos, LDAP ou x.509), os nomes de usuário não podem ter mais de 10k bytes.

A partir do MongoDB 5.0, mongod e mongos agora emitem um aviso de inicialização quando seus certificados não incluem um atributo Subject Alternative Name.

As seguintes plataformas não suportam validação de nome comum:

  • iOS 13 e superior

  • MacOS 10.15 e superior

  • Vá para 1,15 e superior

Os clientes que usam essas plataformas não se autenticarão no MongoDB Server que usa o certificado X.509 cujos nomes de host são especificados pelos atributos CommonName.

Para autenticação interna entre nós de clusters fragmentados e conjuntos de réplica, você pode usar x.509 certificados em vez de keyfiles, que usam o mecanismo de autenticação SCRAM .

Os certificados de membro que você usa para verificar a associação a um cluster fragmentado ou a um conjunto de réplicas (net.tls.clusterFile, se especificado, e net.tls.certificateKeyFile) devem ter as seguintes propriedades:

  • Uma única Autoridade de Certificação (CA) deve emitir todas as x.509 certificados para os membros de um cluster fragmentado ou de um conjunto de réplicas.

  • O nome diferenciado (DN), encontrado no certificado de membro subject, deve especificar um valor não vazio para pelo menos um dos seguintes atributos:

    • a Organização (O)

    • a Unidade Organizacional (OU)

    • o componente de domínio (DC)

  • Os atributos da Organização (O 's), os atributos da Unidade organizacional (OU 's) e os componentes de domínio (DC 's) devem corresponder aos dos certificados net.tls.clusterFile e net.tls.certificateKeyFile para o outros membros do cluster (ou o valor tlsX509ClusterAuthDNOverride , se definido).

    Para corresponder, o certificado deve corresponder a todas as especificações desses atributos, mesmo a não especificação desses atributos. A ordem dos atributos não importa.

    No exemplo a seguir, os dois DN contêm especificações correspondentes para O, OU , bem como a não especificação do atributo DC .

    CN=host1,OU=Dept1,O=MongoDB,ST=NY,C=US
    C=US, ST=CA, O=MongoDB, OU=Dept1, CN=host2

    No entanto, os dois DN a seguir contêm uma incompatibilidade para o atributo OU , pois um contém duas especificações OU e o outro, apenas uma especificação.

    CN=host1,OU=Dept1,OU=Sales,O=MongoDB
    CN=host2,OU=Dept1,O=MongoDB
  • Em sistemas de vários clusters, cada cluster deve usar um certificado de membro X.509 diferente. Cada certificado deve ter valores exclusivos nos campos O, OU e DC Campos de nome distinto (DN).

    Se dois clusters tiverem certificados com os mesmos valores de DN, um servidor comprometido em um cluster poderá se autenticar como membro do outro.

  • As entradas Nome comum (CN) ou uma das entradas nome alternativo do assunto (SAN) devem corresponder ao servidor para outros membros do cluster. A partir do MongoDB 4.2, ao comparar SANs, o MongoDB pode comparar nomes DNS ou endereços IP. Nas versões anteriores, o MongoDB compara apenas os nomes DNS.

    Por exemplo, os certificados de um cluster podem ter os seguintes assuntos:

    subject= CN=<myhostname1>,OU=Dept1,O=MongoDB,ST=NY,C=US
    subject= CN=<myhostname2>,OU=Dept1,O=MongoDB,ST=NY,C=US
    subject= CN=<myhostname3>,OU=Dept1,O=MongoDB,ST=NY,C=US
  • Se o certificado utilizado como certificateKeyFile incluir extendedKeyUsage, o valor deverá incluir clientAuth ("Autenticação de cliente Web TLS") e serverAuth ("Autenticação de servidor Web TLS").

    extendedKeyUsage = clientAuth, serverAuth
  • Se o certificado utilizado como clusterFile incluir extendedKeyUsage, o valor deverá incluir clientAuth.

    extendedKeyUsage = clientAuth
  • O certificado x.509 não pode expirar.

    O mongod / mongos registra um aviso na conexão se o certificado x.509 apresentado expirar dentro de 30 dias do horário do sistema host mongod/mongos. Consulte a página Avisos de expiração dos certificados x.509 para obter mais informações.

Você pode usar TLS para autenticação interna entre cada membro do seu conjunto de réplicas (cada instância mongod) ou cluster fragmentado (cada instância mongod e mongos).

Para usar TLS para autenticação interna, use as seguintes configurações:

As instâncias mongod e mongos usam o arquivo de chave de certificado para provar sua identidade aos clientes, mas ele também pode ser usado para autenticação de associação. Se você não especificar um arquivo de cluster, os nós utilizarão seus arquivos de chave de certificado para autenticação de associação. Especifique o arquivo de chave do certificado com net.tls.certificateKeyFile ou --tlsCertificateKeyFile.

Para usar o certificate key file para autenticação de cliente e autenticação de associação, o certificado deve:

  • Omitir extendedKeyUsage ou

  • Especificar extendedKeyUsage = serverAuth, clientAuth

Voltar

Autentique clientes

Próximo

Autentique clientes