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
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:
localhostomongo0.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.pemejemplo.Un certificado CA para firmar los certificados del servidor, como por ejemplo
ca.pem.Acceso al
mongodarchivo de configuración en cada nodo.Acceso a
mongosh.
Pasos
Siga este procedimiento si no necesita autenticación mTLS o X.509 dentro del clúster entre los nodos del servidor.
Crear un archivo de clave
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.
Edita el archivo de configuración en cada nodo.
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
modeconfigurado enallowTLSacepta conexiones TLS pero no las requiere, por lo que los nodos pueden completar un reinicio gradual sin interrumpir la replicación.certificateKeyFileespecifica el certificado del nodo. Reemplace el nombre del archivo con el archivo de clave del certificado para el nodo específico que está configurando.CAFileespecifica el certificado de CA que firmó el certificado del nodo.allowConnectionsWithoutCertificatesPermite a los clientes conectarse sin proporcionar un certificado TLS.clusterAuthModeconfigurado enkeyFilepermite que los nodos se autentiquen mediante un archivo de clave.keyFileespecifica el archivo de clave que los nodos utilizan para autenticarse entre sí.tlsWithholdClientCertificateimpide 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 laclientAuthEKU.
Reiniciar los miembros del conjunto de réplicas
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
Actualiza la configuración para forzar TLS.
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
Reiniciar los miembros del conjunto de réplicas
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.
Edita el archivo de configuración en cada nodo.
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
modeconfigurado enallowTLSacepta conexiones TLS pero no las requiere, por lo que los nodos pueden completar un reinicio gradual sin interrumpir la replicación.certificateKeyFileespecifica el certificado del nodo. Reemplace el nombre del archivo con el archivo de clave del certificado para el nodo específico que está configurando.CAFileespecifica el certificado de CA que firmó el certificado del nodo.allowConnectionsWithoutCertificatesPermite a los clientes conectarse sin proporcionar un certificado TLS.net.tls.clusterAuthX509.attributesespecifica 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..509clusterAuthModeconfigurado enx509permite que los nodos se autentiquen utilizando509 certificados X..
Reiniciar los miembros del conjunto de réplicas
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
Actualiza la configuración para forzar TLS.
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
Reiniciar los miembros del conjunto de réplicas
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
Inspeccione los registros para verificar su configuración TLS.
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.
Próximos pasos
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".