Как использовать команду docker swarm ca для управления центром сертификации Swarm

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии вы узнаете, как управлять центром сертификации (CA) Docker Swarm с помощью команды docker swarm ca. Мы рассмотрим основные операции, включая просмотр текущего сертификата CA Swarm для понимания его деталей и срока действия.

Кроме того, вы узнаете, как обновить CA Swarm. Это включает обновление CA с новым сгенерированным сертификатом для регулярных обновлений, обновление его с пользовательским сертификатом и ключом для удовлетворения конкретных требований безопасности, а также выполнение обновления в отсоединенном режиме для фонового выполнения. Эти шаги являются важными для обеспечения безопасности и работоспособности вашего кластера 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{{"Как использовать команду docker swarm ca для управления центром сертификации Swarm"}} docker/system -.-> lab-555239{{"Как использовать команду docker swarm ca для управления центром сертификации Swarm"}} end

Просмотр текущего сертификата CA Swarm

На этом шаге мы узнаем, как просмотреть текущий сертификат CA Swarm. Центр сертификации (CA) Swarm отвечает за выдачу сертификатов узлам в кластере Docker Swarm, которые используются для безопасного обмена данными между узлами.

Для просмотра текущего сертификата CA Swarm вы можете использовать команду docker swarm ca с флагом --cert-dir, чтобы указать каталог, где хранятся сертификаты Swarm. По умолчанию этот каталог - /var/lib/docker/swarm/certificates.

Сначала убедимся, что вы находитесь в правильном каталоге. Ваш каталог по умолчанию - ~/project.

pwd

Вы должны увидеть вывод, похожий на следующий:

/home/labex/project

Теперь давайте посмотрим текущий сертификат CA Swarm. Мы будем использовать sudo, так как доступ к каталогу /var/lib/docker требует привилегий суперпользователя.

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

Эта команда выведет информацию о сертификате CA Swarm, включая его срок действия и издателя. Вывод будет похож на следующий:

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

Этот вывод показывает детали текущего сертификата CA Swarm. Поля Valid From и Valid Until указывают срок действия сертификата. Поле Issuer показывает, кто выдал сертификат, в данном случае это сам CA Swarm.

Обновление CA Swarm новым сгенерированным сертификатом

На этом шаге мы узнаем, как обновить CA Swarm новым сгенерированным сертификатом. Обновление CA Swarm является рекомендуемой безопасностью практикой, чтобы гарантировать регулярное обновление сертификатов, используемых для обмена данными в кластере Swarm.

При обновлении CA Swarm Docker генерирует новый сертификат и ключ CA, а затем выдает новые сертификаты всем узлам в Swarm. Этот процесс обычно проходит бесшовно и не требует остановки ваших служб.

Для обновления CA Swarm новым сгенерированным сертификатом вы можете использовать команду docker swarm ca --rotate. Эта команда автоматически сгенерирует новый CA и распространит новые сертификаты по узлам.

Убедитесь, что вы находитесь в своем домашнем каталоге ~/project.

pwd

Вы должны увидеть /home/labex/project.

Теперь давайте обновим CA Swarm. Мы будем использовать sudo, так как эта операция требует привилегий суперпользователя.

sudo docker swarm ca --rotate

Вы увидите вывод, указывающий на то, что CA обновляется. Вывод будет похож на следующий:

Swarm CA rotated.

После завершения обновления Swarm начнет использовать новый сертификат CA. Узлы в Swarm автоматически обновят свои сертификаты, чтобы они были подписаны новым CA.

Чтобы убедиться, что CA был обновлен, вы можете снова просмотреть сертификат CA Swarm, используя команду из предыдущего шага:

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

Сравните даты Valid From и Valid Until с предыдущим выводом. Вы должны увидеть, что дата Valid From теперь ближе к текущей дате, что указывает на то, что был сгенерирован новый сертификат.

Обновление CA Swarm с использованием пользовательского сертификата и ключа

На этом шаге мы узнаем, как обновить CA Swarm, используя пользовательский сертификат и ключ. Это полезно, если вы хотите использовать свою собственную инфраструктуру CA или интегрировать Swarm с существующей инфраструктурой открытых ключей (PKI - Public Key Infrastructure).

Для обновления CA Swarm с использованием пользовательского сертификата и ключа вам нужно указать пути к файлам пользовательского сертификата и ключа CA с помощью флагов --cert и --key в команде docker swarm ca --rotate.

Сначала создадим фиктивные файлы сертификата и ключа для демонстрации. В реальной жизни вы будете использовать реальные сертификат и ключ CA.

Убедитесь, что вы находитесь в своем домашнем каталоге ~/project.

pwd

Вы должны увидеть /home/labex/project.

Теперь создадим фиктивные файлы сертификата и ключа. Мы будем использовать openssl для генерации самоподписанного сертификата и приватного ключа.

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

Эта команда генерирует приватный ключ (custom_ca.key) и самоподписанный сертификат (custom_ca.crt), действительные в течение 365 дней с общим именем "custom-swarm-ca".

Теперь, когда у нас есть пользовательский сертификат и ключ, мы можем обновить CA Swarm, используя эти файлы.

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

Вы увидите вывод, указывающий на то, что CA обновляется с использованием пользовательского сертификата и ключа. Вывод будет похож на следующий:

Swarm CA rotated.

После завершения обновления Swarm начнет использовать ваш пользовательский сертификат CA. Узлы в Swarm автоматически обновят свои сертификаты, чтобы они были подписаны вашим пользовательским CA.

Чтобы убедиться, что CA был обновлен с использованием вашего пользовательского сертификата, вы можете снова просмотреть сертификат CA Swarm:

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

Проверьте вывод. Поле Issuer теперь должно показывать общее имя вашего пользовательского CA, то есть "CN=custom-swarm-ca".

Обновление CA Swarm в отсоединенном режиме

На этом шаге мы узнаем, как обновить CA Swarm в отсоединенном режиме. Отсоединенный режим позволяет сгенерировать новый сертификат и ключ CA без немедленного распространения их по узлам Swarm. Это может быть полезно в сценариях, когда вам нужно вручную управлять распространением новых сертификатов.

Для обновления CA Swarm в отсоединенном режиме используйте команду docker swarm ca --rotate --detach. Эта команда сгенерирует новый сертификат и ключ CA и сохранит их в каталог сертификатов Swarm (/var/lib/docker/swarm/certificates), но не обновит узлы автоматически.

Убедитесь, что вы находитесь в своем домашнем каталоге ~/project.

pwd

Вы должны увидеть /home/labex/project.

Теперь обновим CA Swarm в отсоединенном режиме. Мы будем использовать sudo, так как эта операция требует привилегий суперпользователя.

sudo docker swarm ca --rotate --detach

Вы увидите вывод, указывающий на то, что CA был обновлен в отсоединенном режиме. Вывод будет похож на следующий:

Swarm CA rotated in detached mode.

В отсоединенном режиме новый сертификат и ключ CA генерируются и сохраняются, но узлы Swarm не обновляются автоматически. Затем вам нужно будет вручную распространить новый сертификат CA по другим узлам в кластере Swarm и указать им перезагрузить свои конфигурации.

Чтобы убедиться, что CA был обновлен в отсоединенном режиме, вы можете снова просмотреть сертификат CA Swarm:

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

Вы должны увидеть, что дата Valid From сертификата была обновлена, что указывает на то, что был сгенерирован новый CA. Однако узлы в Swarm по-прежнему используют старый CA, пока они не будут обновлены вручную.

Резюме

В этом практическом занятии мы научились управлять центром сертификации (CA - Certificate Authority) Swarm с помощью команды docker swarm ca. Мы начали с просмотра текущего сертификата CA Swarm, чтобы понять его детали, такие как период действия и издатель, используя флаг --cert-dir.

Затем мы изучили, как обновить CA Swarm с использованием вновь сгенерированного сертификата, что является важной мерой безопасности для обновления сертификатов, используемых для безопасного обмена данными в кластере Swarm.