Página inicial do Docs → Desenvolver aplicações → Manual do MongoDB
Use certificados x.509 para autenticar clientes
Nesta página
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.
Pré-requisitos
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.
Autoridade de certificação
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
.
Certificado de cliente x.509
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
ounet.ssl.allowInvalidCertificates: true
para MongoDB 4.0 e versões mais recentes--tlsAllowInvalidCertificates
ounet.tls.allowInvalidCertificates: true
para MongoDB 4.2 e versões mais recentes
Procedimento
Distribuir com autenticação x.509
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.
Adicione x.509 Certificado subject
como usuário
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.
Você pode recuperar o
RFC2253
formatadosubject
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----- Adicione o valor compatível com
RFC2253
dosubject
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 dadostest
e a roleuserAdminAnyDatabase
: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.
Autenticar com um Certificado x.509
Depois de adicionar o x.509 assunto de certificado de cliente como usuário MongoDB correspondente, você pode autenticar com o certificado de cliente:
Próximos passos
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.