TLS(SSL)-сертификаты балансировщика нагрузки
Для работы с HTTPS-трафиком на балансировщик необходимо добавить TLS(SSL)-сертификат, чтобы балансировщик мог читать HTTPS-запросы и использовать информацию протокола HTTP для правильной балансировки. Терминация TLS-сертификата происходит на балансировщике, балансировщик передает данные серверам по HTTP.
Сертификаты с пустым полем CN
(Common Name) не поддерживаются в балансировщиках нагрузки.
Если вы используете балансировщик для работы с кластером Managed Kubernetes, по умолчанию балансировщик создается без TLS(SSL)-сертификата и для приема трафика назначается внешний порт 80. Чтобы создать балансировщик с TLS(SSL)-сертификатом и назначить для приема трафика внешний порт 443, используйте инструкцию Терминировать TLS-соединения в разделе Managed Kubernetes. Для корректной работы балансировщика в кластере все действия с балансировщиком необходимо выполнять через kubectl.
Балансировщик нагрузки работает с TLS(SSL)-сертификатами из менеджера секретов. Вы можете:
- выпустить бесплатный Let's Encrypt® сертификат, в том числе Wildcard (для домена и поддоменов);
- добавить пользовательский сертификат, поддерживаются сертификаты с опциями SAN (один сертификат для нескольких доменов) и Wildcard.
Сертификат добавляется при создании правила для HTTP- или HTTPS-трафика. В панели управления для правила можно выбрать только один TLS(SSL)-сертификат. Используйте OpenStack CLI, если вам нужно добавить в правило несколько сертификатов или добавить mTLS-сертификат.
Вы можете изменить сертификат после создания правила:
-
обновить пользовательский сертификат в менеджере секретов.
Let's Encrypt® сертификаты, выпущенные в менеджере секретов, перевыпускаются автоматически. При перевыпуске или обновлении сертификата в менеджере он автоматически обновится на балансировщике. Сессии со старым сертификатом будут прерваны и переустановлены с новым сертификатом в течение трех часов после обновления сертификата. Для большинства протоколов переустановка сессий происходит незаметно для конечных пользователей.
Добавить несколько TLS(SSL)-сертификатов для балансировщика
-
Загрузите TLS(SSL)-сертификаты в менеджер секретов — выпустите Let's Encrypt® сертификаты или добавьте пользовательские. Сертификаты с пустым полем
CN
(Common Name) не поддерживаются в облачных балансировщиках нагрузки. -
Добавьте сертификаты — создайте новое правило для балансировщика нагрузки или обновите существующее:
Создать правило
Обновить правило
openstack loadbalancer listener create \
-v --protocol-port 443 \
--protocol TERMINATED_HTTPS \
--name <listener_name> \
--default-tls-container=<certificate_uuid_1> \
--sni-container-refs <certificate_uuid_1> <certificate_uuid_2> \
-- <loadbalancer>Укажите:
<listener_name>
— имя правила;<certificate_uuid_1>
,<certificate_uuid_2>
— ID сертификатов, которые вы добавили в менеджер секретов на шаге 1. Можно скопировать в панели управления: в верхнем меню нажмите Продукты → Менеджер секретов → вкладка Сертификаты → в меню сертификата выберите Скопировать UUID;<loadbalancer>
— ID или имя балансировщика. Список можно посмотреть с помощью командыopenstack loadbalancer list
.
openstack loadbalancer listener set \
--sni-container-refs <certificate_uuid_1> <certificate_uuid_2> \
-- <listener>Укажите:
<certificate_uuid_1>
,<certificate_uuid_2>
— ID сертификатов, которые вы добавили в менеджер секретов на шаге 1. Можно скопировать в панели управления: в верхнем меню нажмите Продукты → Менеджер секретов → вкладка Сертификаты → в меню сертификата выберите Скопировать UUID;<listener>
— ID или имя правила. Список можно посмотреть с помощью командыopenstack loadbalancer listener list
.
Добавить mTLS-сертификат для балансировщика
Протокол mTLS отличается от TLS двусторонней аутентификацией — при установке соединения проверяется не только подлинность сервера, но и подлинность входящего запроса. Для этого в каждой сессии используются два сертификата — для сервера в целевой группе за балансировщиком и для входящего запроса.
-
Загрузите в менеджер секретов CA-сертификат, который будет использоваться для аутентификации входящих запросов на балансировщик, — добавьте его в качестве пользовательского.
-
Загрузите в менеджер секретов сертификат, который будет использоваться для аутентификации сервера в целевой группе за балансировщиком, — выпустите Let's Encrypt® сертификат или добавьте пользовательский.
-
Создайте правило с mTLS-сертификатом:
openstack loadbalancer listener create \
-v --protocol-port 80 \
--protocol TERMINATED_HTTPS \
--name <listener_name> \
--client-authentication MANDATORY \
--client-ca-tls-container-ref <certificate_uuid_1> \
--default-tls-container-ref <certificate_uuid_2> \
-- <loadbalancer>Укажите:
<listener_name>
— имя правила;<certificate_uuid_1>
— ID CA-сертификата, который вы добавили в менеджер секретов на шаге 1. Можно скопировать в панели управления: в верхнем меню нажмите Продукты → Менеджер секретов → вкладка Сертификаты → в меню сертификата выберите Скопировать UUID;<certificate_uuid_2>
— ID сертификата, который вы добавили в менеджер секретов на шаге 2. Можно скопировать в панели управления: в верхнем меню нажмите Продукты → Менеджер секретов → вкладка Сертификаты → в меню сертификата выберите Скопировать UUID;<loadbalancer>
— ID или имя балансировщика. Список можно посмотреть с помощью командыopenstack loadbalancer list
.
Заменить TLS(SSL)-сертификат в правиле балансировщика
Если в правило балансировщика нагрузки с HTTPS-протоколом добавлен TLS(SSL)-сертификат и заканчивается срок его действия, его можно заменить — добавить другой сертификат с новой датой окончания действия сертификата.
Панель управления
OpenStack CLI
-
Добавьте новый пользовательский сертификат в менеджер секретов.
-
В панели управления в верхнем меню нажмите Продукты и выберите Облачные серверы.
-
Перейдите в раздел Балансировщики → вкладка Балансировщики.
-
Откройте страницу балансировщика.
-
Откройте карточку правила.
-
В строке TLS-сертификат нажмите .
-
Выберите новый сертификат. Сертификаты с пустым полем
CN
(Common Name) не поддерживаются в облачных балансировщиках нагрузки. -
Нажмите .
-
Добавьте новый пользовательский сертификат в менеджер секретов.
-
Замените сертификат в правиле:
openstack loadbalancer listener set \
--default-tls-container-ref <certificate_uuid> \
-- <listener>Укажите:
<certificate_uuid>
— ID сертификата, который вы добавили в менеджер секретов на шаге 1. Можно посмотреть в панели управления: в верхнем меню нажмите Продукты → Менеджер секретов → вкладка Сертификаты → в меню сертификата выберите Скопировать UUID;<listener>
— ID или имя правила. Список можно посмотреть с помощью командыopenstack loadbalancer listener list
.