MongoDB Ops Manager puede rotar los certificados TLS en una implementación gestionada sin reiniciar los procesos de MongoDB. Cuando incrementas el campo certificatesVersion en la configuración de automatización, MongoDB Agent ejecuta db.adminCommand({ rotateCertificates: 1 }) en cada proceso elegible en su lugar, por lo que las conexiones del cliente permanecen ininterrumpidas durante toda la operación.
Elegibilidad
El MongoDB Agent aplica la rotación de tiempo de inactividad cero solo a los procesos que cumplen todos los requisitos siguientes:
La versión de MongoDB es 5.0 o posterior.
TLS está configurado en el proceso.
Todos los nodos de la implementación cumplen los requisitos anteriores.
El MongoDB Agent no puede aplicar la rotación sin tiempo de inactividad a un proceso en ninguna de las siguientes categorías. En la Interfaz de Usuario de MongoDB Ops Manager, la casilla de verificación para una implementación no elegible está deshabilitada. A través de la API de automatización, MongoDB Ops Manager rechaza una actualización de configuración para una implementación no elegible con un error HTTP 400 que explica el motivo:
Condición | Comportamiento |
|---|---|
Versión de MongoDB anterior a 5.0 | No se puede seleccionar en la Interfaz de Usuario del Ops Manager. La API de automatización rechaza la actualización de la configuración con un error HTTP 400. |
TLS no configurado | No se puede seleccionar en la Interfaz de Usuario del Ops Manager. La API de automatización rechaza la actualización de la configuración con un error HTTP 400. |
BI Connector o | No se puede seleccionar en la Interfaz de Usuario del Ops Manager. La API de automatización rechaza la actualización de la configuración con un error HTTP 400. |
TLS el cambio de ruta coincide con la rotación | El reinicio en secuencia gestiona el cambio de ruta. Ops Manager registra la rotación como completa. |
Importante
La rotación sin tiempo de inactividad requiere que todos los procesos de la implementación cumplan los requisitos de elegibilidad. Si algún proceso no cumple los requisitos, utilice el método existente: vaya a Deployment, Security, Settings, TLS Settings, actualice la ruta del certificado y active un reinicio en secuencia a través de Review and Deploy.
Requisitos previos
Antes de rotar los certificados, verifique lo siguiente:
Su implementación está gestionada por la automatización de MongoDB Ops Manager.
TLS está habilitado en la implementación.
Su nuevo certificado TLS es válido y se sobrescribe correctamente en la ruta configurada original.
Rotar certificados TLS
Utilice la API de automatización o la interfaz de usuario de Ops Manager para activar la rotación de certificados.
Importante
No puede revertir certificatesVersion a un valor anterior a través de la interfaz de usuario o la API. MongoDB Ops Manager solo permite que este valor aumente.
Utilice la API de automatización
Para rotar los certificados mediante la API de automatización, recupere la configuración de automatización actual, incremente certificatesVersion y cargue la configuración actualizada.
Recuperar la configuración actual de automatización.
Envíe una solicitud GET al punto de conexión de configuración de automatización:
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" \ --digest \ --header "Accept: application/json" \ --request GET \ "https://<OpsManagerHost>/api/public/v1.0/groups/{GROUP-ID}/automationConfig"
Guarde el cuerpo de la respuesta en un archivo local, como automation-config.json.
Incrementa el campo certificatesVersion.
En el arreglo processes, localice el objeto de cada proceso que desee rotar. Incrementa el entero certificatesVersion en 1. Si el campo no está presente, agréguelo y establézcalo en 1.
Para activar la rotación in situ, establezca un valor mayor que el valor publicado actualmente. Los valores iguales no activan la rotación. Ops Manager rechaza los decrementos con HTTP 400 INVALID_AUTOMATION_CONFIG. Para conocer las reglas de validación de campos, consulte Procesos de MongoDB.
Cargue la configuración de automatización actualizada.
Envíe una solicitud PUT con la configuración modificada:
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" \ --digest \ --header "Accept: application/json" \ --header "Content-Type: application/json" \ --request PUT \ --data @automation-config.json \ "https://<OpsManagerHost>/api/public/v1.0/groups/{GROUP-ID}/automationConfig"
Supervise la implementación hasta que alcance el estado objetivo.
En la interfaz de usuario de MongoDB Ops Manager, haga clic en Deployment y, a continuación, en Processes. Espere a que el indicador de estado muestre que todos los procesos han convergido. MongoDB Agent aplica la rotación a cada proceso elegible y registra el resultado.
Utilice la Interfaz de Usuario de MongoDB Ops Manager
Para rotar certificados con la interfaz de usuario de Ops Manager, vaya a la configuración de TLS de su proyecto y seleccione las implementaciones que desea rotar.
Estado de rotación y durabilidad
El MongoDB Agent conserva el resultado de cada rotación para que sobreviva a los reinicios del agente y se reanude desde donde lo dejó.
MongoDB Ops Manager registra un evento TLS_CERTIFICATES_ROTATED en la fuente de actividad del proyecto cada vez que una actualización de la configuración de automatización rota los certificados en uno o más procesos. Utilice este evento para auditar el historial de rotación de certificados.
Comportamiento de reintentos
Si el comando rotateCertificates falla, el MongoDB Agent devuelve el código de error 128 (TlsCertificatesRotationErr). Ops Manager muestra "Error de rotación de certificado TLS" en el panel de estado de automatización y reprograma el paso en el siguiente tick de convergencia. Corrija el archivo de certificado en el disco para resolver el error.
Si el comando se ejecuta correctamente, pero el MongoDB Agent no puede conservar el resultado, se reintenta automáticamente.
Cómo el agente aplica la rotación
Cuando el agente de MongoDB detecta un certificatesVersion incrementado en la configuración de automatización, comprueba cada proceso elegible con los requisitos de elegibilidad y ejecuta db.adminCommand({ rotateCertificates: 1 }).