Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Configurar TLS en implementaciones autogestionadas

Este tutorial le muestra cómo configurar TLS en un set de réplicas autogestionado. Seleccione un enfoque en función de si desea utilizar mTLS intraclúster, que es necesario para habilitar la autenticación X.509 entre nodos.

Importante

Estos pasos se aplican a implementaciones de MongoDB autogestionadas. Los clústeres de MongoDB Atlas utilizan TLS por defecto. Si utiliza Cloud Manager o MongoDB Ops Manager, configure TLS a través de su herramienta de gestión de implementación.

Antes de empezar, verifique que tiene lo siguiente:

  • Un set de réplicas autogestionado en el que cada nodo tiene un nombre de host, como localhost o mongo0.example.com. Actualmente, TLS no está configurado en ningún nodo del set de réplicas.

  • Certificados de servidor TLS para cada nodo que obtuvo siguiendo el tutorial Obtener certificados de servidor, como mongo0.pem.

  • Un certificado de CA para firmar los certificados del servidor, como ca.pem.

  • Acceso al archivo de configuración mongod en cada nodo.

  • Access to mongosh.

Siga este procedimiento si no necesita mTLS intraclúster o autenticación X.509 entre los nodos del servidor.

1

Cada nodo utiliza el contenido de un archivo de claves para autenticar a otros nodos de la implementación. Cree un archivo de claves con el siguiente comando:

openssl rand -base64 756 > /etc/ssl/mongodb/keyfile
chmod 400 /etc/ssl/mongodb/keyfile

Copia el archivo de claves a cada nodo de la implementación. Asegúrate de restringir los permisos en el archivo de claves para que solo el proceso mongod pueda leer el archivo.

2

En cada nodo, busca y abre el archivo de configuración mongod. Si el archivo no existe, créalo. Agrega las siguientes opciones de TLS. Utiliza rutas absolutas a los archivos de certificado.

Por ejemplo, el archivo de configuración de su nodo primario tiene el siguiente aspecto:

net:
tls:
mode: allowTLS
certificateKeyFile: /etc/ssl/mongodb/mongo0.pem
CAFile: /etc/ssl/mongodb/ca.pem
allowConnectionsWithoutCertificates: true
security:
clusterAuthMode: keyFile
keyFile: /etc/ssl/mongodb/keyfile
setParameter:
tlsWithholdClientCertificate: true
  • mode configurado en allowTLS acepta conexiones TLS, pero no las requiere, por lo que los nodos pueden completar un reinicio en secuencia sin interrumpir la replicación.

  • certificateKeyFile especifica el certificado del nodo. Reemplace el nombre de archivo con el archivo de clave de certificado para el nodo específico que está configurando. CAFile especifica el certificado de CA que firmó el certificado del nodo.

  • allowConnectionsWithoutCertificates permite a los clientes conectarse sin proporcionar un certificado TLS.

  • clusterAuthMode configurado en keyFile permite que los nodos se autentiquen mediante un archivo de claves. keyFile especifica el archivo de claves que los nodos utilizan para autenticarse entre sí.

  • tlsWithholdClientCertificate evita que el nodo presente su certificado de servidor al realizar conexiones salientes a otros nodos del clúster. Esto es necesario porque evita que los nodos utilicen certificados de autenticación de servidor para la autenticación de cliente, especialmente si sus certificados no incluyen el EKU clientAuth.

3

Reinicie el proceso mongod para aplicar la nueva configuración de TLS. Para aplicar la configuración sin tiempo de inactividad, reinicie los nodos de forma progresiva.

En cada host de la implementación, comenzando por los nodos secundarios y terminando por el nodo primario, ejecuta lo siguiente:

sudo systemctl restart mongod

Para verificar que el reinicio en secuencia se completó correctamente, ejecute el siguiente comando en cada host:

sudo systemctl status mongod
4

Después de que todos los nodos se reinicien correctamente con TLS habilitado, actualice el archivo de configuración en cada nodo. Cambie net.tls.mode de allowTLS a requireTLS para aplicar conexiones cifradas para todos los clientes y nodos:

net:
tls:
mode: requireTLS
5

Reinicie el proceso mongod para aplicar la nueva configuración de TLS. Para aplicar la configuración sin tiempo de inactividad, reinicie los nodos de forma progresiva.

En cada host de la implementación, comenzando por los nodos secundarios y terminando por el nodo primario, ejecuta lo siguiente:

sudo systemctl restart mongod

Para verificar que el reinicio en secuencia se completó correctamente, ejecute el siguiente comando en cada host:

sudo systemctl status mongod

Siga este procedimiento para configurar su set de réplicas para usar mTLS intraclúster y autenticación X.509 entre nodos.

1

Importante

Your node certificates must include both serverAuth and clientAuth EKU for intra-cluster mTLS. If your certificates do not include clientAuth, see the Public Certificate Authority Policy Changes Affecting mTLS Technical Advisory for alternative configuration options.

En cada nodo, busca y abre el archivo de configuración mongod. Si el archivo no existe, créalo. Agrega las siguientes opciones de TLS. Utiliza rutas absolutas a los archivos de certificado.

Por ejemplo, el archivo de configuración de su nodo primario tiene el siguiente aspecto:

net:
tls:
mode: allowTLS
certificateKeyFile: /etc/ssl/mongodb/mongo0.pem
CAFile: /etc/ssl/mongodb/ca.pem
allowConnectionsWithoutCertificates: true
clusterAuthX509:
attributes: O=MongoDB
security:
clusterAuthMode: x509
  • mode configurado en allowTLS acepta conexiones TLS, pero no las requiere, por lo que los nodos pueden completar un reinicio en secuencia sin interrumpir la replicación.

  • certificateKeyFile especifica el certificado del nodo. Reemplace el nombre de archivo con el archivo de clave de certificado para el nodo específico que está configurando. CAFile especifica el certificado de CA que firmó el certificado del nodo.

  • allowConnectionsWithoutCertificates permite a los clientes conectarse sin proporcionar un certificado TLS.

  • net.tls.clusterAuthX509.attributes especifica los atributos del certificado X.509 que identifican un nodo como nodo del clúster, en lugar de un cliente normal. Para conocer los atributos de certificado necesarios, consulte Certificado X.509 de nodo.

  • clusterAuthMode configurado en x509 permite que los nodos se autentiquen mediante certificados X.509.

2

Reinicie el proceso mongod para aplicar la nueva configuración de TLS. Para aplicar la configuración sin tiempo de inactividad, reinicie los nodos de forma progresiva.

En cada host de la implementación, comenzando por los nodos secundarios y terminando por el nodo primario, ejecuta lo siguiente:

sudo systemctl restart mongod

Para verificar que el reinicio en secuencia se completó correctamente, ejecute el siguiente comando en cada host:

sudo systemctl status mongod
3

Después de que todos los nodos se reinicien correctamente con TLS habilitado, actualice el archivo de configuración en cada nodo. Cambie net.tls.mode de allowTLS a requireTLS para aplicar conexiones cifradas para todos los clientes y nodos:

net:
tls:
mode: requireTLS
4

Reinicie el proceso mongod para aplicar la nueva configuración de TLS. Para aplicar la configuración sin tiempo de inactividad, reinicie los nodos de forma progresiva.

En cada host de la implementación, comenzando por los nodos secundarios y terminando por el nodo primario, ejecuta lo siguiente:

sudo systemctl restart mongod

Para verificar que el reinicio en secuencia se completó correctamente, ejecute el siguiente comando en cada host:

sudo systemctl status mongod
5

Una vez que se complete el reinicio en secuencia, inspeccione los registros de cada nodo para verificar que TLS esté configurado correctamente. Sus registros deben incluir el siguiente contenido para verificar que la autenticación mTLS y X.509 estén configuradas correctamente:

"msg":"Successfully authenticated",
"attr": {
"isClusterMember":true,
"mechanism":"MONGODB-X509",
"user":"CN=mongo1.example.com,O=MongoDB,L=New York City,ST=New-York,C=US"
}

Debería ver un mensaje de registro similar para cada uno de los otros dos nodos de su set de réplicas. Por ejemplo, si consulta los registros en mongo0, debería ver mensajes similares a los anteriores para mongo1 y mongo2.

Para aprender a conectarse a su implementación con una aplicación cliente, continúe con Conectarse a un set de réplicas habilitado para TLS.

Califique esta página