Use o certificado x.509 para autenticação de associação com o MongoDB autogerenciado
Nesta página
O MongoDB é compatível com a autenticação de certificado x.509 para uso com uma conexão TLS/SSL segura. Os membros do cluster fragmentado e os membros do conjunto de réplicas podem usar certificados x.509 para verificar sua associação ao cluster ou ao conjunto de réplicas em vez de usar arquivos de chaves. A autenticação da associação é um processo interno.
Observação
O MongoDB desabilita o suporte para criptografia TLS 1.0 em sistemas em que o TLS 1.1+ está disponível.
Habilitar a autenticação interna também habilita o Controle de Acesso Baseado em Função em Implantações Autogerenciadas. Os clientes devem se autenticar como um usuário para conectar e executar operações no sistema.
Consulte o tutorial Gerenciar usuários e funções em implantações autogerenciadas para obter instruções sobre como adicionar usuários à implantação.
Consulte o tutorial Usar certificados x.509 para autenticar clientes em implantações autogerenciadas para obter instruções sobre como usar certificados x.509 para autenticação de usuários.
Importante
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.
Certificado de Membro x.509
Observação
Você deve ter certificados x.509 válidos.
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.
Requisitos de certificado
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 membrosubject
, 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 certificadosnet.tls.clusterFile
enet.tls.certificateKeyFile
para o outros membros do cluster (ou o valortlsX509ClusterAuthDNOverride
, 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 paraO
,OU
, bem como a não especificação do atributoDC
.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 atributoOU
, pois um contém duas especificaçõesOU
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
eDC
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 compararSAN
s, 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
incluirextendedKeyUsage
, o valor deverá incluirclientAuth
("Autenticação de cliente Web TLS") eserverAuth
("Autenticação de servidor Web TLS").extendedKeyUsage = clientAuth, serverAuth Se o certificado utilizado como
clusterFile
incluirextendedKeyUsage
, o valor deverá incluirclientAuth
.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 de30
dias do horário do sistema hostmongod/mongos
.
Configurar conjunto de réplicas/cluster fragmentado
Fora dos procedimentos de atualização contínua, cada componente de um conjunto de réplicas ou cluster fragmentado deve usar a mesma configuração --clusterAuthMode
para garantir que possa se conectar com segurança a todos os outros componentes do sistema.
Para sistemas do conjunto de réplicas, isto inclui todos os membros do mongod
do conjunto de réplicas.
Para sistemas de cluster fragmentado, isto inclui todas as instâncias do mongod
ou mongos
.
Observação
mongod
e mongos
se vinculam ao localhost por padrão. Se os membros do sistema forem executados em hosts diferentes, ou se você desejar que os clientes remotos se conectem ao sistema, especifique --bind_ip
ou net.bindIp
.
Usar opções de linha de comando (tls
)
Observação
Os procedimentos nesta seção usam as configurações/opções do tls
. Para procedimentos usando os aliases ssl
obsoletos, consulte Usar opções de linha de comando (ssl
).
As configurações/opções tls
oferecem funcionalidade idêntica à das opções ssl
, pois o MongoDB sempre foi compatível com o TLS 1.0 e posterior.
mongod --replSet <name> --tlsMode requireTLS --clusterAuthMode x509 --tlsClusterFile <path to membership certificate and key PEM file> --tlsCertificateKeyFile <path to TLS/SSL certificate and key file> --sslCAFile <path to root CA file> --bind_ip localhost,<hostname(s)|ip address(es)>
Importante
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
.
Inclua opções adicionais, TLS/SSL ou de outra forma, que sejam necessárias para sua configuração específica. Para
security: clusterAuthMode: x509 net: tls: mode: requireTLS certificateKeyFile: <path to its TLS/SSL certificate and key file> CAFile: <path to root CA PEM file to verify received certificate> clusterFile: <path to its certificate key file for membership authentication> bindIp: localhost,<hostname(s)|ip address(es)>
Importante
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
.
Inclua opções adicionais, TLS/SSL ou de outra forma, que sejam necessárias para sua configuração específica.
Para obter mais informações, consulte Configurar mongod
e mongos
para TLS/SSL.
Usar opções de linha de comando (ssl
)
Observação
Os procedimentos nesta seção usam as configurações/opção de ssl
preteridas. Para procedimentos que usam aliases tls
, consulte Usar opções de linha de comando (tls
).
As configurações/opções tls
oferecem funcionalidade idêntica à das opções ssl
, pois o MongoDB sempre foi compatível com o TLS 1.0 e posterior.
Para especificar o certificado x.509 para autenticação interna de nós do cluster, acrescente as opções adicionais TLS/SSL --clusterAuthMode
e --sslClusterFile
, como no exemplo a seguir para um nó de um conjunto de réplicas:
mongod --replSet <name> --sslMode requireSSL --clusterAuthMode x509 --sslClusterFile <path to membership certificate and key PEM file> --sslPEMKeyFile <path to TLS/SSL certificate and key PEM file> --sslCAFile <path to root CA PEM file> --bind_ip localhost,<hostname(s)|ip address(es)>
Importante
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
.
Inclua opções adicionais, TLS/SSL ou de outra forma, que sejam necessárias para sua configuração específica.
security: clusterAuthMode: x509 net: ssl: mode: requireSSL PEMKeyFile: <path to TLS/SSL certificate and key PEM file> CAFile: <path to root CA PEM file> clusterFile: <path to x.509 membership certificate and key PEM file> bindIp: localhost,<hostname(s)|ip address(es)>
Importante
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
.
Inclua opções adicionais, TLS/SSL ou de outra forma, que sejam necessárias para sua configuração específica.
Para obter mais informações, consulte Configurar mongod
e mongos
para TLS/SSL.
Informações adicionais
Para atualizar da autenticação interna do keyfile para x.509 autenticação interna, consulte Atualizar o MongoDB autogerenciado da autenticação de keyfile para x. Autenticação do 509 .
Para executar uma atualização contínua dos certificados para novos certificados com DN
diferentes, consulte Atualização contínua de x.509 Certificados que contêm novo DN em clusters autogerenciados.