Cómo usar el comando docker swarm ca para gestionar la CA de Swarm

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo administrar la Autoridad de Certificación (CA, por sus siglas en inglés) de Docker Swarm utilizando el comando docker swarm ca. Cubriremos operaciones esenciales, como ver el certificado CA actual de Swarm para entender sus detalles y validez.

Además, explorará cómo rotar la CA de Swarm. Esto incluye rotar la CA con un nuevo certificado generado para actualizaciones rutinarias, rotarla con un certificado y una clave personalizados para requisitos de seguridad específicos y realizar la rotación en modo desacoplado para la ejecución en segundo plano. Estos pasos son cruciales para mantener la seguridad y el buen funcionamiento de su clúster de Docker Swarm.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/system("Manage Docker") subgraph Lab Skills docker/info -.-> lab-555239{{"Cómo usar el comando docker swarm ca para gestionar la CA de Swarm"}} docker/system -.-> lab-555239{{"Cómo usar el comando docker swarm ca para gestionar la CA de Swarm"}} end

Ver el certificado CA actual de Swarm

En este paso, aprenderemos cómo ver el certificado CA actual de Swarm. La CA (Autoridad de Certificación) de Swarm es responsable de emitir certificados a los nodos en un clúster de Docker Swarm, que se utilizan para la comunicación segura entre nodos.

Para ver el certificado CA actual de Swarm, puede utilizar el comando docker swarm ca con la bandera --cert-dir para especificar el directorio donde se almacenan los certificados de Swarm. Por defecto, este directorio es /var/lib/docker/swarm/certificates.

Primero, asegúrate de estar en el directorio correcto. Tu directorio de trabajo predeterminado es ~/project.

pwd

Deberías ver una salida similar a esta:

/home/labex/project

Ahora, veamos el certificado CA actual de Swarm. Usaremos sudo porque acceder al directorio /var/lib/docker requiere privilegios de root.

sudo docker swarm ca --cert-dir /var/lib/docker/swarm/certificates

Este comando mostrará información sobre el certificado CA de Swarm, incluyendo su período de validez y el emisor. La salida se verá similar a esta:

Certificate information:
------------------------
Common Name: swarm-ca
Organization:
Organizational Unit:
Country:
Province:
Locality:
Valid From: 2023-10-27 00:00:00 +0000 UTC
Valid Until: 2024-10-26 00:00:00 +0000 UTC
Issuer: CN=swarm-ca

Esta salida muestra los detalles del certificado CA actual de Swarm. Los campos Valid From y Valid Until indican el período de validez del certificado. El campo Issuer muestra quién emitió el certificado, que en este caso es la propia CA de Swarm.

Rotar la CA de Swarm con un nuevo certificado generado

En este paso, aprenderemos cómo rotar la CA de Swarm con un nuevo certificado generado. Rotar la CA de Swarm es una mejor práctica de seguridad para garantizar que los certificados utilizados para la comunicación dentro del clúster de Swarm se actualicen regularmente.

Cuando se rota la CA de Swarm, Docker genera un nuevo certificado y una nueva clave de CA, y luego emite nuevos certificados a todos los nodos del Swarm. Este proceso suele ser transparente y no requiere tiempo de inactividad para sus servicios.

Para rotar la CA de Swarm con un nuevo certificado generado, puede utilizar el comando docker swarm ca --rotate. Este comando generará automáticamente una nueva CA y distribuirá los nuevos certificados a los nodos.

Asegúrese de estar en su directorio de inicio ~/project.

pwd

Debería ver /home/labex/project.

Ahora, rotemos la CA de Swarm. Usaremos sudo ya que esta operación requiere privilegios de root.

sudo docker swarm ca --rotate

Verá una salida que indica que se está rotando la CA. La salida será similar a esta:

Swarm CA rotated.

Después de que se complete la rotación, el Swarm comenzará a utilizar el nuevo certificado de CA. Los nodos del Swarm actualizarán automáticamente sus certificados para que sean firmados por la nueva CA.

Para verificar que se haya rotado la CA, puede ver el certificado de CA de Swarm nuevamente utilizando el comando del paso anterior:

sudo docker swarm ca --cert-dir /var/lib/docker/swarm/certificates

Compare las fechas de Valid From y Valid Until con la salida anterior. Debería ver que la fecha de Valid From ahora está más cerca de la fecha actual, lo que indica que se ha generado un nuevo certificado.

Rotar la CA de Swarm con un certificado y una clave personalizados

En este paso, aprenderemos cómo rotar la CA de Swarm utilizando un certificado y una clave personalizados. Esto es útil si desea utilizar su propia infraestructura de CA o integrar Swarm con una infraestructura PKI (Infraestructura de Clave Pública) existente.

Para rotar la CA de Swarm con un certificado y una clave personalizados, debe proporcionar las rutas a sus archivos de certificado y clave de CA personalizados utilizando las banderas --cert y --key con el comando docker swarm ca --rotate.

Primero, creemos archivos de certificado y clave ficticios con fines demostrativos. En un escenario del mundo real, utilizaría su certificado y clave de CA reales.

Asegúrese de estar en su directorio de inicio ~/project.

pwd

Debería ver /home/labex/project.

Ahora, creemos los archivos de certificado y clave ficticios. Utilizaremos openssl para generar un certificado autofirmado y una clave privada.

openssl req -x509 -nodes -newkey rsa:2048 -keyout ~/project/custom_ca.key -out ~/project/custom_ca.crt -days 365 -subj "/CN=custom-swarm-ca"

Este comando genera una clave privada (custom_ca.key) y un certificado autofirmado (custom_ca.crt) válido por 365 días con el Nombre Común "custom-swarm-ca".

Ahora que tenemos nuestro certificado y clave personalizados, podemos rotar la CA de Swarm utilizando estos archivos.

sudo docker swarm ca --rotate --cert ~/project/custom_ca.crt --key ~/project/custom_ca.key

Verá una salida que indica que se está rotando la CA con el certificado y la clave personalizados. La salida será similar a esta:

Swarm CA rotated.

Después de que se complete la rotación, el Swarm comenzará a utilizar su certificado de CA personalizado. Los nodos del Swarm actualizarán automáticamente sus certificados para que sean firmados por su CA personalizada.

Para verificar que se haya rotado la CA con su certificado personalizado, puede ver el certificado de CA de Swarm nuevamente:

sudo docker swarm ca --cert-dir /var/lib/docker/swarm/certificates

Examine la salida. El campo Issuer ahora debe mostrar el Nombre Común de su CA personalizada, que es "CN=custom-swarm-ca".

Rotar la CA de Swarm en modo desacoplado

En este paso, aprenderemos cómo rotar la CA de Swarm en modo desacoplado. El modo desacoplado le permite generar el nuevo certificado y la nueva clave de CA sin distribuirlos inmediatamente a los nodos del Swarm. Esto puede ser útil en escenarios donde necesita gestionar manualmente la distribución de los nuevos certificados.

Para rotar la CA de Swarm en modo desacoplado, utilice el comando docker swarm ca --rotate --detach. Este comando generará el nuevo certificado y la nueva clave de CA y los guardará en el directorio de certificados de Swarm (/var/lib/docker/swarm/certificates), pero no actualizará automáticamente los nodos.

Asegúrese de estar en su directorio de inicio ~/project.

pwd

Debería ver /home/labex/project.

Ahora, rotemos la CA de Swarm en modo desacoplado. Usaremos sudo ya que esta operación requiere privilegios de root.

sudo docker swarm ca --rotate --detach

Verá una salida que indica que la CA se ha rotado en modo desacoplado. La salida será similar a esta:

Swarm CA rotated in detached mode.

En modo desacoplado, el nuevo certificado y la nueva clave de CA se generan y almacenan, pero los nodos del Swarm no se actualizan automáticamente. Luego, tendría que distribuir manualmente el nuevo certificado de CA a los otros nodos de su clúster de Swarm e instruirlos a recargar sus configuraciones.

Para verificar que la CA se ha rotado en modo desacoplado, puede ver el certificado de CA de Swarm nuevamente:

sudo docker swarm ca --cert-dir /var/lib/docker/swarm/certificates

Debería ver que la fecha de Valid From del certificado se ha actualizado, lo que indica que se ha generado una nueva CA. Sin embargo, los nodos del Swarm todavía están utilizando la CA antigua hasta que se actualicen manualmente.

Resumen

En este laboratorio, aprendimos cómo gestionar la Autoridad de Certificación (CA, por sus siglas en inglés) de Swarm utilizando el comando docker swarm ca. Comenzamos viendo el certificado actual de la CA de Swarm para entender sus detalles, como el período de validez y el emisor, utilizando la bandera --cert-dir.

Posteriormente, exploramos cómo rotar la CA de Swarm con un certificado recién generado, una práctica de seguridad crucial para actualizar los certificados utilizados para la comunicación segura dentro del clúster de Swarm.