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

Use x.509 Certificados para autenticar clientes em implementações autogerenciadas

Nesta página

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

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

Para usar x. Autenticação 509 para conjuntos de réplicas ou clusters fragmentados, consulte Usar x. Certificado 509 para autenticação de associação com MongoDB autogerenciado.

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.

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 a autenticação.

1

Você pode configurar uma instância mongod 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 o x. Autenticação 509 para conjuntos de réplicas ou clusters fragmentados, consulte Usar x. Certificado 509 para autenticação de associação com MongoDB autogerenciado.

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 Client Sessions e Causal Consistency Guarantees 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 em sistemas autogerenciados 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 x. Autenticação 509 para conjuntos de réplicas ou clusters fragmentados, consulte Usar x. Certificado 509 para autenticação de associação com MongoDB autogerenciado.

Voltar

x.509

Próximo

Kerberos