Actualización continua de x.509 certificados que contienen un nuevo DN en clústeres autoadministrados
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 (O's), los atributos de la unidad organizativa (OU) y los componentes del dominio (DC) de los certificados deben coincidir.
En algunas situaciones, puede que necesite actualizar los certificados de miembro a nuevos certificados con el nuevo nombre distintivo (),DN por ejemplo, si una organización cambia de nombre. Puede usar el parámetro para establecer un alternativo para tlsX509ClusterAuthDNOverride la DN 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 presupone que los nuevos certificados x.509 cumplen con todos los demás requisitos del certificado de membresía. Para más información, consulte Requisitos del certificado de membresía.
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, puede configurar el parámetro de anulación en los miembros 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. Modificar la configuración de TODOS los miembros
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. Reiniciar cada miembro
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:
Utilice el método para cerrar el
db.shutdownServer()miembro: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() Utilice el método para cerrar el
db.shutdownServer()miembro:use admin db.shutdownServer() Reinicia el nodo.
3. Eliminar la tlsX509ClusterAuthDNOverride configuración
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.