Actualización incremental de los certificados x.509 que contienen un nuevo nombre distinguido en clústeres autogestionados
Los nodos de un set de réplicas o de un clúster pueden usar certificados x.509 para autenticación de membresía para identificarse mutuamente como miembros de la misma implementación.
Para identificarse entre sí como miembros del mismo implementación, los atributos de la Organización (On), los atributos de la Unidad Organizativa (OUn) y los Componentes de Dominio (DCn) de los certificados deben coincidir.
En algunas situaciones, es posible que debas actualizar los certificados de los nodos a nuevos certificados con el nuevo nombre distintivo (DN), como si una organización cambia su nombre. Puede usar el parámetro tlsX509ClusterAuthDNOverride para establecer un DN alternativo que usar en la coincidencia. Con este parámetro, puede realizar una actualización continua de los certificados a nuevos certificados con un DN diferente.
El siguiente tutorial describe el proceso para actualizar los certificados de un set de réplicas sin tiempo de inactividad.
Considera un set de réplicas donde los certificados de cada nodo (clusterFile y certificateKeyFile) con un valor DN que contiene "OU=10gen Server,O=10gen" (no se consideran atributos adicionales como parte de la comparación):
net.tls.mode: requireTLS net.tls.certificateKeyFile: "./mycerts/10gen-server1.pem" net.tls.CAFile: "./mycerts/ca.pem" security.clusterAuthMode: x509 net.tls.clusterFile: "./mycerts/10gen-cluster1.pem" net.tls.clusterCAFile: "./mycerts/ca.pem"
El siguiente procedimiento actualiza los certificados de nodos (clusterFile y certificateKeyFile) a nuevos certificados que tienen un valor DN con "OU=MongoDB Server,O=MongoDB".
Nota
El siguiente procedimiento asume que los nuevos certificados X.509 cumplen con los requisitos necesarios y todos los demás requisitos de membresía de certificados. Para más detalles, consulta requisitos del certificado de nodo
Procedimiento
0. Opcional. Establecer el parámetro de anulación en los miembros en ejecución
El procedimiento requiere que todos los nodos de la implementación sean reiniciados. Como la configuración no se tendrá en cuenta hasta que reinicies todos los nodos, puede que tus instancias registren mensajes hasta que se complete el procedimiento.
Para evitar estos mensajes, puedes configurar el parámetro de anulación en los nodos en ejecución.
Conecta mongosh directamente a cada nodo del despliegue y establece el parámetro tlsX509ClusterAuthDNOverride en el nuevo certificado DN:
db.adminCommand( { setParameter: 1, tlsX509ClusterAuthDNOverride: "OU=MongoDB Server,O=MongoDB" } )
1. Modifica la configuración de TODOS los nodos
Modifica la configuración de cada nodo:
Actualiza
net.tls.certificateKeyFileal nuevo certificado.Actualiza
net.tls.clusterFileal nuevo certificado.Establece el parámetro
tlsX509ClusterAuthDNOverrideen el nuevo certificadoDN.
Por ejemplo:
net.tls.mode: requireTLS net.tls.certificateKeyFile: "./mycerts/mongodb-server1.pem" net.tls.CAFile: "./mycerts/ca.pem" security.clusterAuthMode: x509 net.tls.clusterFile: "./mycerts/mongodb-cluster1.pem" net.tls.clusterCAFile: "./mycerts/ca.pem" setParameter: tlsX509ClusterAuthDNOverride: "OU=MongoDB Server,O=MongoDB"
La configuración no se tendrá en cuenta hasta que reinicie cada nodo (vea el siguiente paso).
2. Reinicia cada nodo
Una vez que haya modificado la configuración para todos los nodos, reinicie cada secundario y, a continuación, el primario.
Para cada nodo secundario, conecta mongosh al nodo y:
Utiliza el método
db.shutdownServer()para apagar el nodo:use admin db.shutdownServer() Reinicia el nodo.
Asegúrate de que el nodo haya alcanzado el estado
SECONDARYantes de reiniciar el siguiente secundario.
Para el primario, conecte mongosh al nodo y
Usa
rs.stepDown()para destituir al nodo:rs.stepDown() Utiliza el método
db.shutdownServer()para apagar el nodo:use admin db.shutdownServer() Reinicia el nodo.
3. remover la configuración tlsX509ClusterAuthDNOverride
Una vez que todos los miembros se hayan reiniciado con el nuevo certificado, puedes remover el parámetro tlsX509ClusterAuthDNOverride de la configuración.
Por ejemplo:
net.tls.mode: requireTLS net.tls.certificateKeyFile: "./mycerts/mongodb-server1.pem" net.tls.CAFile: "./mycerts/ca.pem" security.clusterAuthMode: x509 net.tls.clusterFile: "./mycerts/mongodb-cluster1.pem" net.tls.clusterCAFile: "./mycerts/ca.pem"
Los ajustes no se tendrán en cuenta hasta que reinicie cada nodo.