Docs Menu
Docs Home
/ /
/ / /

Configurar TLS en implementaciones autogestionadas

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

Importante

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

Antes de comenzar, verifique que tiene lo siguiente:

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

  • Certificados de servidor TLS para cada nodo que obtuvo siguiendo el procedimiento Tutorial para obtener certificados de servidor, como por mongo0.pem ejemplo.

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

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

  • Acceso a mongosh.

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

1

Cada nodo utiliza el contenido de un archivo de clave para autenticar a los demás miembros del despliegue. Cree un archivo de clave con el siguiente comando:

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

Copia el archivo de clave a cada nodo de tu implementación. Asegúrate de restringir los permisos del archivo de clave para que solo el proceso mongod pueda leerlo.

2

En cada nodo, localice y abra su mongod archivo de configuración. Si el archivo no existe, créelo. Agregue las siguientes opciones TLS. Utilice rutas absolutas a los archivos de certificado.

Por ejemplo, el archivo de configuración de su nodo principal 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 gradual sin interrumpir la replicación.

  • certificateKeyFile especifica el certificado del nodo. Reemplace el nombre del archivo con el archivo de clave del 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 clave. keyFile especifica el archivo de clave que los nodos utilizan para autenticarse entre sí.

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

3

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

En cada host de su implementación, comenzando con los nodos secundarios y terminando con el nodo principal, ejecute lo siguiente:

sudo systemctl restart mongod

Para verificar que el reinicio gradual se haya completado 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 forzar conexiones cifradas para todos los clientes y miembros:

net:
tls:
mode: requireTLS
5

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

En cada host de su implementación, comenzando con los nodos secundarios y terminando con el nodo principal, ejecute lo siguiente:

sudo systemctl restart mongod

Para verificar que el reinicio gradual se haya completado correctamente, ejecute el siguiente comando en cada host:

sudo systemctl status mongod

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

1

Importante

Los certificados de sus nodos deben incluir tanto serverAuth como clientAuth EKU para mTLS dentro del clúster. Si sus certificados no clientAuth incluyen,consulte el Aviso técnico sobre cambios en la política de la Autoridad de Certificación Pública que afectan a mTLS para obtener opciones de configuración alternativas.

En cada nodo, localice y abra su mongod archivo de configuración. Si el archivo no existe, créelo. Agregue las siguientes opciones TLS. Utilice rutas absolutas a los archivos de certificado.

Por ejemplo, el archivo de configuración de su nodo principal 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 gradual sin interrumpir la replicación.

  • certificateKeyFile especifica el certificado del nodo. Reemplace el nombre del archivo con el archivo de clave del 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 a un nodo como miembro del clúster, en lugar de un cliente normal. Para conocer los atributos de certificado obligatorios, consulte Certificado de miembro X..509

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

2

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

En cada host de su implementación, comenzando con los nodos secundarios y terminando con el nodo principal, ejecute lo siguiente:

sudo systemctl restart mongod

Para verificar que el reinicio gradual se haya completado 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 forzar conexiones cifradas para todos los clientes y miembros:

net:
tls:
mode: requireTLS
4

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

En cada host de su implementación, comenzando con los nodos secundarios y terminando con el nodo principal, ejecute lo siguiente:

sudo systemctl restart mongod

Para verificar que el reinicio gradual se haya completado correctamente, ejecute el siguiente comando en cada host:

sudo systemctl status mongod
5

Una vez finalizado el reinicio gradual, inspeccione los registros de cada nodo para verificar que TLS esté configurado correctamente. Sus registros deben incluir el siguiente contenido para verificar que mTLS y la autenticación 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ías ver un mensaje de registro similar para cada uno de los otros dos nodos de tu conjunto de réplicas. Por ejemplo, si revisas los registros de mongo0, deberías 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 la sección "Conectarse a un conjunto de réplicas habilitado para TLS".

Volver

Obtener certificados

En esta página