Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Use certificados x.509 para autenticar clientes

Nesta página

  • Pré-requisitos
  • Procedimento
  • Próximos passos

O procedimento a seguir define a autenticação de certificado x.509 para autenticação de cliente em uma instância mongod standalone.

Para usar a autenticação x.509 para conjuntos de réplicas ou clusters fragmentados, consulte Usar certificado x.509 para autenticação de associação.

Uma descrição completa dos certificados TLS/SSL, PKI (Public Key Infrastructure), em particular os certificados x.509, e da autoridade de certificação está além do escopo deste documento. Este tutorial pressupõe conhecimento prévio de TLS/SSL, bem como acesso a certificados x.509 válidos.

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 usar a autenticação x.509, --tlsCAFile ou net.tls.CAFile deve-se especificar a menos que você esteja usando --tlsCertificateSelector ou --net.tls.certificateSelector.

Você deve ter certificados x.509 válidos. Os certificados x.509 do cliente devem atender aos requisitos de certificado do cliente.

A partir do MongoDB 4,0, se você especificar qualquer uma das seguintes opções de autenticação x.509, um certificado inválido será suficiente apenas para estabelecer uma conexão TLS, mas será insuficiente para autenticação:

  • --sslAllowInvalidCertificates ou net.ssl.allowInvalidCertificates: true para MongoDB 4.0 e versões mais recentes

  • --tlsAllowInvalidCertificates ou net.tls.allowInvalidCertificates: true para MongoDB 4.2 e versões mais recentes

1

Para configurar a autenticação x.509 para conjuntos de réplicas ou agrupamentos fragmentados, consulte Usar certificado x.509 para autenticação de associação.

2

Para autenticar com um certificado de cliente, você deve primeiro adicionar o valor do subject do certificado de cliente como um usuário do MongoDB ao banco de dados do $external. Cada certificado de cliente x.509 exclusivo 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 .

Observação

Requisitos do nome de 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.

  • Os RDNs na subject string devem ser compatíveis com RFC2253 padrão.

  1. Você pode recuperar o RFC2253 formatado subject do certificado do cliente com o seguinte comando:

    openssl x509 -in <pathToClientPEM> -inform PEM -subject -nameopt RFC2253

    O comando retorna a string subject e o certificado:

    subject= CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry
    -----BEGIN CERTIFICATE-----
    # ...
    -----END CERTIFICATE-----
  2. Adicione o valor compatível com RFC2253 do subject como usuário. Omita espaços conforme necessário.

    O exemplo a seguir adiciona um usuário e concede a ele a role readWrite no banco de dados test e a role userAdminAnyDatabase:

    db.getSiblingDB("$external").runCommand(
    {
    createUser: "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry",
    roles: [
    { role: "readWrite", db: "test" },
    { role: "userAdminAnyDatabase", db: "admin" }
    ],
    writeConcern: { w: "majority" , wtimeout: 5000 }
    }
    )

    Consulte Gerenciar usuários e funções para obter detalhes sobre como adicionar um usuário com roles.

3

Depois de adicionar o x.509 assunto de certificado de cliente como usuário MongoDB correspondente, você pode autenticar com o certificado de cliente:

Para usar a autenticação x.509 para conjuntos de réplicas ou clusters fragmentados, consulte Usar certificado x.509 para autenticação de associação.

← x.509