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.



