TLS/SSL (Criptografia de transporte)
TLS/SSL
O MongoDB suporta TLS/SSL (Transport Layer Security/Secure Sockets Layer) para criptografar todo o tráfego de rede do MongoDB. TLS/SSL garante que o tráfego de rede do MongoDB seja legível apenas pelo cliente pretendido.
A partir do MongoDB 7.0 e 6.0.7, O MongoDB suporta OpenSSL 3,0 e o provedor OpenSSL FIPS com estes sistemas operacionais:
Red Hat Enterprise Linux 9
Amazon Linux 2023
Ubuntu Linux 22.04
Versões TLS
O MongoDB desabilita o suporte para criptografia TLS 1.0 em sistemas em que o TLS 1.1+ está disponível.
Bibliotecas TLS
O MongoDB usa as bibliotecas de sistemas operacionais TLS/SSL nativas:
Plataforma | Biblioteca TLS/SSL |
---|---|
Windows | Secure Channel (Schannel) |
Linux/BSD | OpenSSL |
macOS | Secure Transport |
Cifras TLS/SSL
A criptografia TLS/SSL do MongoDB só permite o uso de cifras TLS/SSL fortes com um mínimo de 128 bits de comprimento de chave para todas as conexões.
Sigilo de encaminhamento
Os conjuntos de criptografia Forward Secrecy criam uma chave de sessão efêmera que é protegida pela chave privada do servidor, mas nunca é transmitida. O uso de uma chave efêmera garante que, mesmo que a chave privada de um servidor seja comprometida, você não pode descriptografar sessões passadas com a chave comprometida.
O MongoDB suporta conjuntos de cifras Forward Secrecy que usam algoritmos Ephemeral Diffie-Hellman (DHE) e Ephemeral Elliptic Curve Diffie-Hellman (ECDHE).
Curva elíptica efemeral Diffie-Hellman (ECDHE)
Plataforma | Nível de suporte |
---|---|
Linux | Se o OpenSSL da plataforma Linux suporta seleção automática de curva, o MongoDB permite o suporte para Ephemeral Elliptic Curve Diffie-Hellman (ECDHE). Caso contrário, se o OpenSSL da plataforma Linux não suportar seleção automática de curva, o MongoDB tentará ativar o suporte ECDHE utilizando |
Windows | O Ephemeral Elliptic Curve Diffie-Hellman (ECDHE) é implicitamente suportado através do uso do Secure Channel (Schannel), a biblioteca nativa TLS/SSL do Windows. |
macOS | O Ephemeral Elliptic Curve Diffie-Hellman (ECDHE) tem suporte implícito por meio do uso do Secure Transport, a biblioteca nativa TLS/SSL do macOS. |
As suítes de cifra ECDHE são mais lentas que as suítes de cifra RSA estáticas. Para um melhor desempenho com o ECDHE, você pode utilizar certificados que utilizam o algoritmo de assinatura digital de curva elíptica (ECDSA
). Consulte também Desempenho do sigilo de encaminhamento para obter mais informações
Disfemeral Diffie-Hellman (DHE)
Plataforma | Nível de suporte |
---|---|
Linux | O MongoDB permite suporte para Diffie-Hellman efêmero (DHE):
|
Windows | O Ephemeral Diffie-Hellman (DHE) é implicitamente suportado pelo uso do Secure Channel (Schannel), a biblioteca nativa do Windows TLS/SSL. |
macOS | O Ephemeral Diffie-Hellman (DHE) é tem suporte implícito através do uso do Secure Transport, a biblioteca nativa de TLS/SSL macOS. |
Observação
Se os clientes negociarem um conjunto de cifras com DHE, mas não puderem aceitar o parâmetro selecionado do servidor, a conexão TLS falhará.
Parâmetros fortes (ou seja, o tamanho é maior que 1024) não são suportados com Java 6 e 7, a menos que o suporte estendido tenha sido adquirido de Oráculo. No entanto, o Java 7 suporta e prefere ECDHE, assim como negocie ECDHE, se disponível.
Os conjuntos de cifra DHE (e ECDHE) são de desempenho mais lento que os conjuntos de codificação RSA estáticos, com DHE sendo significativamente mais lento que ECDHE. Consulte Desempenho do sigilo de encaminhamento para obter mais informações.
Desempenho de sigilo de encaminhamento
As suítes de codificação DHE e ECDHE são mais lentas do que as suítes de codificação RSA estáticas, com DHE sendo significativamente mais lento que ECDHE.
Para um melhor desempenho com o ECDHE, você pode usar certificados que usam o algoritmo de assinatura digital de curva elíptica (ECDSA
). Alternativamente, você pode desabilitar conjuntos de cifras ECDHE com o parâmetro opensslCipherConfig
como no exemplo seguinte (que também desabilita DHE)
mongod --setParameter opensslCipherConfig='HIGH:!EXPORT:!aNULL:!kECDHE:!ECDHE:!DHE:!kDHE@STRENGTH'
Se você precisar desabilitar o suporte para conjuntos de cifras DHE devido ao desempenho, você poderá utilizar o parâmetro opensslCipherConfig
, como no seguinte exemplo:
mongod --setParameter opensslCipherConfig='HIGH:!EXPORT:!aNULL:!DHE:!kDHE@STRENGTH'
Certificados
Para usar TLS/SSL com MongoDB, você deve ter os certificados TLS/SSL como arquivos PEM
, que são contêineres de certificados concatenados.
O MongoDB pode usar qualquer certificado TLS/SSL válido emitido por um certificado autoridade ou um certificado autoassinado. Para uso em produção, sua implementação do MongoDB deve usar certificados válidos gerados e assinados pela mesma autoridade de certificação. Você pode gerar e manter uma autoridade de certificação independente ou usar certificados gerados por um fornecedor de TLS/SSL de terceiros.
Usar um certificado assinado por uma autoridade certificadora confiável permite Drivers MongoDB para verificar a identidade do servidor.
Por exemplo, consulte configuração TLS/SSL para clientes.
Aviso de expiração do certificado
O mongod
/ mongos
registra um aviso na conexão se o certificado x.509 apresentado expirar dentro de 30
dias do horário do sistema host mongod/mongos
.
OCSP (Protocolo de status do certificado online)
A partir do MongoDB 6.0, se ocspEnabled
estiver definido como true
durante a sincronização inicial, todos os nós deverão ser capazes de alcançar o respondente OCSP.
Se um membro falhar no estado STARTUP2
, defina tlsOCSPVerifyTimeoutSecs
como um valor menor que 5
.
Para verificar a revogação do certificado, o MongoDB enables
usa o OCSP (Online Certificate Status Protocol) por padrão. O uso do OCSP elimina a necessidade de baixar periodicamente um Certificate Revocation List (CRL)
e reiniciar o mongod
/ mongos
com a CRL atualizada.
Como parte de seu suporte a OCSP, o MongoDB é compatível com o seguinte no Linux:
Grampeamento OCSP. Com o grampeamento OCSP, as instâncias
mongod
emongos
anexam ou "grampeiam" a resposta de status OCSP aos seus certificados ao fornecer esses certificados aos clientes durante o handshake TLS/SSL. Ao incluir a resposta de status OCSP com os certificados, o grampeamento OCSP evita a necessidade de os clientes fazerem uma solicitação separada para recuperar o status OCSP dos certificados fornecidos.Extensão must-staple do OCSP. Must-staple OCSP é uma extensão que pode ser adicionada ao certificado do servidor que informa ao cliente para esperar um grampo OCSP quando ele recebe um certificado durante o handshake TLS/SSL.
O MongoDB também fornece os seguintes parâmetros relacionados ao OCSP:
Parâmetro | Descrição |
---|---|
Habilita ou desabilita o suporte do OCSP. | |
Especifica o número de segundos de espera antes de atualizar a resposta de status do OCSP grampeada. | |
Você pode definir esses parâmetros na inicialização usando a configuração do arquivo de configuração setParameter
ou a opção de linha de comando --setParameter
.
Observação
A partir do MongoDB 5.0, o comando rotateCertificates
e o método db.rotateCertificates()
também atualizarão todas as respostas OCSP grampeadas.
Verificação de identidade
Além de criptografar conexões, o TLS/SSL permite a autenticação usando certificados, tanto para autenticação de cliente quanto para autenticação interna de membros de conjunto de réplicas e réplicas fragmentadas.
Para mais informações, veja:
Modo FIPS
Observação
Funcionalidade de empresas
Disponível apenas no MongoDB Enterprise.
O Federal Information Processing Standard (FIPS) é um padrão de segurança de computadores do governo dos EUA usado para certificar módulos de software e bibliotecas que criptografam e descriptografam dados com segurança. Você pode configurar o MongoDB para ser executado com uma biblioteca certificada FIPS 140-2 para OpenSSL. Configure o FIPS para ser executado por padrão ou conforme necessário na linha de comando.
Para obter um exemplo, consulte configurar MongoDB para FIPS.