Como usar o comando docker swarm ca para gerenciar a CA do Swarm

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como gerenciar a Autoridade de Certificação (CA - Certificate Authority) do Docker Swarm usando o comando docker swarm ca. Abordaremos operações essenciais, incluindo a visualização do certificado atual da CA do Swarm para entender seus detalhes e validade.

Além disso, você explorará como rotacionar a CA do Swarm. Isso inclui rotacionar a CA com um certificado recém-gerado para atualizações de rotina, rotacioná-la com um certificado e chave personalizados para requisitos de segurança específicos e realizar a rotação em modo detached (destacado) para execução em segundo plano. Essas etapas são cruciais para manter a segurança e a integridade do seu cluster Docker Swarm.

Visualizar o certificado atual da CA do Swarm

Nesta etapa, aprenderemos como visualizar o certificado atual da CA do Swarm. A CA (Certificate Authority - Autoridade de Certificação) do Swarm é responsável por emitir certificados para os nós em um cluster Docker Swarm, que são usados para comunicação segura entre os nós.

Para visualizar o certificado atual da CA do Swarm, você pode usar o comando docker swarm ca com a flag --cert-dir para especificar o diretório onde os certificados do Swarm são armazenados. Por padrão, este diretório é /var/lib/docker/swarm/certificates.

Primeiro, vamos garantir que você está no diretório correto. Seu diretório de trabalho padrão é ~/project.

pwd

Você deve ver uma saída semelhante a esta:

/home/labex/project

Agora, vamos visualizar o certificado atual da CA do Swarm. Usaremos sudo porque o acesso ao diretório /var/lib/docker requer privilégios de root.

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

Este comando exibirá informações sobre o certificado da CA do Swarm, incluindo seu período de validade e emissor. A saída será semelhante 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 saída mostra os detalhes do certificado atual da CA do Swarm. Os campos Valid From e Valid Until indicam o período de validade do certificado. O campo Issuer mostra quem emitiu o certificado, que neste caso é a própria CA do Swarm.

Rotacionar a CA do Swarm com um novo certificado gerado

Nesta etapa, aprenderemos como rotacionar a CA do Swarm com um novo certificado gerado. A rotação da CA do Swarm é uma prática recomendada de segurança para garantir que os certificados usados para comunicação dentro do cluster Swarm sejam atualizados regularmente.

Quando você rotaciona a CA do Swarm, o Docker gera um novo certificado e chave da CA e, em seguida, emite novos certificados para todos os nós no Swarm. Este processo é tipicamente contínuo e não requer tempo de inatividade para seus serviços.

Para rotacionar a CA do Swarm com um novo certificado gerado, você pode usar o comando docker swarm ca --rotate. Este comando gerará automaticamente uma nova CA e distribuirá os novos certificados para os nós.

Certifique-se de estar no seu diretório home ~/project.

pwd

Você deve ver /home/labex/project.

Agora, vamos rotacionar a CA do Swarm. Usaremos sudo pois esta operação requer privilégios de root.

sudo docker swarm ca --rotate

Você verá uma saída indicando que a CA está sendo rotacionada. A saída será semelhante a esta:

Swarm CA rotated.

Após a conclusão da rotação, o Swarm começará a usar o novo certificado da CA. Os nós no Swarm atualizarão automaticamente seus certificados para serem assinados pela nova CA.

Para verificar se a CA foi rotacionada, você pode visualizar o certificado da CA do Swarm novamente usando o comando da etapa anterior:

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

Compare as datas Valid From e Valid Until com a saída anterior. Você deve ver que a data Valid From está agora mais próxima da data atual, indicando que um novo certificado foi gerado.

Rotacionar a CA do Swarm com um certificado e chave personalizados

Nesta etapa, aprenderemos como rotacionar a CA do Swarm usando um certificado e chave personalizados. Isso é útil se você deseja usar sua própria infraestrutura de CA ou integrar o Swarm com uma PKI (Public Key Infrastructure - Infraestrutura de Chave Pública) existente.

Para rotacionar a CA do Swarm com um certificado e chave personalizados, você precisa fornecer os caminhos para seus arquivos de certificado e chave de CA personalizados usando as flags --cert e --key com o comando docker swarm ca --rotate.

Primeiro, vamos criar arquivos de certificado e chave fictícios para fins de demonstração. Em um cenário real, você usaria seu certificado e chave de CA reais.

Certifique-se de estar no seu diretório home ~/project.

pwd

Você deve ver /home/labex/project.

Agora, vamos criar os arquivos de certificado e chave fictícios. Usaremos openssl para gerar um certificado autoassinado e uma chave 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 gera uma chave privada (custom_ca.key) e um certificado autoassinado (custom_ca.crt) válido por 365 dias com o Common Name "custom-swarm-ca".

Agora que temos nosso certificado e chave personalizados, podemos rotacionar a CA do Swarm usando esses arquivos.

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

Você verá uma saída indicando que a CA está sendo rotacionada com o certificado e chave personalizados. A saída será semelhante a esta:

Swarm CA rotated.

Após a conclusão da rotação, o Swarm começará a usar seu certificado de CA personalizado. Os nós no Swarm atualizarão automaticamente seus certificados para serem assinados pela sua CA personalizada.

Para verificar se a CA foi rotacionada com seu certificado personalizado, você pode visualizar o certificado da CA do Swarm novamente:

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

Examine a saída. O campo Issuer agora deve mostrar o Common Name da sua CA personalizada, que é "CN=custom-swarm-ca".

Rotacionar a CA do Swarm em modo 'detached'

Nesta etapa, aprenderemos como rotacionar a CA do Swarm em modo desanexado. O modo desanexado permite que você gere o novo certificado e chave da CA sem distribuí-los imediatamente para os nós do Swarm. Isso pode ser útil em cenários onde você precisa gerenciar manualmente a distribuição dos novos certificados.

Para rotacionar a CA do Swarm em modo desanexado, você usa o comando docker swarm ca --rotate --detach. Este comando gerará o novo certificado e chave da CA e os salvará no diretório de certificados do Swarm (/var/lib/docker/swarm/certificates), mas não atualizará automaticamente os nós.

Certifique-se de estar no seu diretório home ~/project.

pwd

Você deve ver /home/labex/project.

Agora, vamos rotacionar a CA do Swarm em modo desanexado. Usaremos sudo pois esta operação requer privilégios de root.

sudo docker swarm ca --rotate --detach

Você verá uma saída indicando que a CA foi rotacionada em modo desanexado. A saída será semelhante a esta:

Swarm CA rotated in detached mode.

Em modo desanexado, o novo certificado e chave da CA são gerados e armazenados, mas os nós do Swarm não são atualizados automaticamente. Você precisaria então distribuir manualmente o novo certificado da CA para os outros nós no seu cluster Swarm e instruí-los a recarregar suas configurações.

Para verificar se a CA foi rotacionada em modo desanexado, você pode visualizar o certificado da CA do Swarm novamente:

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

Você deve ver que a data Valid From do certificado foi atualizada, indicando que uma nova CA foi gerada. No entanto, os nós no Swarm ainda estão usando a CA antiga até que sejam atualizados manualmente.

Resumo

Neste laboratório, aprendemos como gerenciar a Autoridade de Certificação (CA - Certificate Authority) do Swarm usando o comando docker swarm ca. Começamos visualizando o certificado atual da CA do Swarm para entender seus detalhes, como período de validade e emissor, usando a flag --cert-dir.

Posteriormente, exploramos como rotacionar a CA do Swarm com um certificado recém-gerado, uma prática de segurança crucial para atualizar os certificados usados para comunicação segura dentro do cluster Swarm.