Menu Docs
Página inicial do Docs
/ /

Use X.509 para autenticar clientes no MongoDB autogerenciado

O procedimento a seguir define a autenticação de certificado x.509 para autenticação de cliente em uma instância mongod autônoma. Isso também é conhecido como TLS mútuo ou mTLS.

Para usar a509 autenticação X. para conjuntos de réplicas ou clusters fragmentados, consulte Verificar associação de cluster com X.509 no MongoDB autogerenciado.

Uma descrição completa dos certificados TLS/SSL, PKI (Public Key Infrastructure), em particular os certificados X.509, e a autoridade de certificação está além do escopo deste documento. Este tutorial pressupõe o conhecimento prévio de TLS/SSL, bem como o 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.

Se você especificar --tlsAllowInvalidCertificates ou net.tls.allowInvalidCertificates: true, um certificado inválido será suficiente apenas para estabelecer uma conexão TLS, mas será insuficiente para autenticação.

1

Você pode configurar uma mongod instância para autenticação X.509 na linha de comando.

Para configurar uma instância standalone do mongod, execute o seguinte comando:

mongod --tlsMode requireTLS \
--tlsCertificateKeyFile <path to TLS/SSL certificate and key PEM file> \
--tlsCAFile <path to root CA PEM file> --bind_ip <hostnames>

Inclua opções adicionais, conforme necessário, para sua configuração.

A configuração X.509 exige:

Opção
Notas

Especifique requireTLS.

Especifique o certificado X.509 da instância para apresentar aos clientes.

Especifique o arquivo da autoridade de certificação para verificar os certificados apresentados à instância.

Você pode configurar um mongod para autenticação X.509 no arquivo de configuração.

Para configurar uma instância mongod autônoma, adicione as seguintes opções de configuração ao seu arquivo de configuração:

net:
tls:
mode: requireTLS
certificateKeyFile: <path to TLS/SSL certificate and key PEM file>
CAFile: <path to root CA PEM file>

Inclua opções adicionais, conforme necessário, para sua configuração.

A configuração X.509 exige:

Opção
Notas

Especifique requireTLS.

Especifique o certificado X.509 da instância para apresentar aos clientes.

Especifique o arquivo da autoridade de certificação para verificar os certificados apresentados à instância.

Para configurar a509 autenticação X. para conjuntos de réplicas ou clusters fragmentados, consulte Verificar associação do cluster com X.509 no MongoDB autogerenciado.

2

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

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 string subject devem ser compatíveis com o padrão RFC2253.

  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 em implantações autogerenciadas para obter detalhes sobre como adicionar um usuário com funções.

3

Após adicionar o assunto do certificado de cliente x.509 como um usuário MongoDB correspondente, você pode autenticar com o certificado de cliente:

Para autenticar durante a conexão, execute o seguinte comando:

mongosh --tls --tlsCertificateKeyFile <path to client PEM file> \
--tlsCAFile <path to root CA PEM file> \
--authenticationDatabase '$external' \
--authenticationMechanism MONGODB-X509
Opção
Notas

Especifique o arquivo X.509 do cliente.

Especifique o arquivo da autoridade de certificação para verificar o certificado apresentado pela instância mongod.

Especifique '$external'.

Especifique MONGODB-X509.

Você pode se conectar sem autenticação e usar o método db.auth() para autenticar após a conexão.

Por exemplo, se estiver usando mongosh,

  1. Conecte mongosh ao mongod:

    mongosh --tls --tlsCertificateKeyFile <path to client PEM file> \
    --tlsCAFile <path to root CA PEM file>
    Opção
    Notas

    Especifique o arquivo X.509 do cliente.

    Especifique o arquivo da autoridade de certificação para verificar o certificado apresentado pela instância mongod ou mongos.

  2. Para autenticar, use o método db.auth() no banco de dados $external. Para o campo mechanism, especifique "MONGODB-X509".

    db.getSiblingDB("$external").auth(
    {
    mechanism: "MONGODB-X509"
    }
    )

Para usar a509 autenticação X. para conjuntos de réplicas ou clusters fragmentados, consulte Verificar associação de cluster com X.509 no MongoDB autogerenciado.

Voltar

x.509

Nesta página