---
title: 'TLS(SSL)-сертификаты балансировщика нагрузки'
sidebar_label: 'TLS(SSL)-сертификаты балансировщика нагрузки'
sidebar_position: 3
description: 'Какие сертификаты можно добавить на облачный балансировщик нагрузки, как добавить несколько TLS(SSL)-сертификатов'
---

import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import CheckIcon from '@selectel/docux/icons/check'
import EditIcon from '@selectel/docux/icons/edit'
import MoreVerticalIcon from '@selectel/docux/icons/more-vertical'
import {TabItemLabel} from '@selectel/docux/components'
import Formbricks from '@theme/MDXComponents/Formbricks'

# TLS(SSL)-сертификаты балансировщика нагрузки

Для работы с HTTPS-трафиком на балансировщик необходимо добавить TLS(SSL)-сертификат, чтобы балансировщик мог читать HTTPS-запросы и использовать информацию протокола HTTP для правильной балансировки. Терминация TLS-сертификата происходит на балансировщике, балансировщик передает данные серверам по HTTP.

Сертификаты с пустым полем `CN` (Common Name) не поддерживаются в балансировщиках нагрузки.

Если вы используете балансировщик для работы с кластером Managed Kubernetes, по умолчанию балансировщик создается без TLS(SSL)-сертификата и для приема трафика назначается внешний порт 80. Чтобы создать балансировщик с TLS(SSL)-сертификатом и назначить для приема трафика внешний порт 443, используйте инструкцию [Терминировать TLS-соединения⁠](/managed-kubernetes/networks/loadbalancing-with-ingress/terminate-tls-connection.mdx) в разделе Managed Kubernetes. Для корректной работы балансировщика в кластере все действия с балансировщиком необходимо выполнять через [kubectl](/managed-kubernetes/clusters/connect-to-cluster.mdx).

Балансировщик нагрузки работает с TLS(SSL)-сертификатами из [менеджера сертификатов](/certificates-manager/). Вы можете:

* [выпустить бесплатный Let's Encrypt® сертификат](/certificates-manager/certificates/lets-encrypt.mdx#issue-lets-encrypt-certificate), в том числе Wildcard (для домена и поддоменов);
* [добавить пользовательский сертификат](/certificates-manager/certificates/user-certificates.mdx#add-user-certificate), поддерживаются сертификаты с опциями SAN (один сертификат для нескольких доменов) и Wildcard.

Сертификат добавляется при [создании правила для HTTP- или HTTPS-трафика](/cloud-servers/load-balancers/rules-and-policies/create-rule-http-https.mdx). В панели управления для правила можно выбрать только один TLS(SSL)-сертификат. Используйте OpenStack CLI, если вам нужно [добавить в правило несколько сертификатов](#add-certificates) или [добавить mTLS-сертификат](#add-mtls-certificate).

Вы можете изменить сертификат после создания правила:

* [заменить сертификат в правиле балансировщика нагрузки](#change-certificate);

* [обновить пользовательский сертификат в менеджере сертификатов](/certificates-manager/certificates/user-certificates.mdx#update-user-certificate).
  <br />Let's Encrypt® сертификаты, выпущенные в менеджере сертификатов, перевыпускаются автоматически.
  При перевыпуске или обновлении сертификата в менеджере он автоматически обновится на балансировщике.
  Сессии со старым сертификатом будут прерваны и переустановлены с новым сертификатом в течение трех часов после обновления сертификата.
  Для большинства протоколов переустановка сессий происходит незаметно для конечных пользователей.

## Добавить несколько TLS(SSL)-сертификатов для балансировщика \{#add-certificates}

1. Загрузите TLS(SSL)-сертификаты в менеджер сертификатов — [выпустите Let's Encrypt® сертификаты](/certificates-manager/certificates/lets-encrypt.mdx#issue-lets-encrypt-certificate) или [добавьте пользовательские](/certificates-manager/certificates/user-certificates.mdx).
   Сертификаты с пустым полем `CN` (Common Name) не поддерживаются в облачных балансировщиках нагрузки.

2. [Откройте OpenStack CLI](/cloud-servers/tools/openstack-cli/).

3. Добавьте сертификаты — создайте новое правило для балансировщика нагрузки или обновите существующее:

   <Tabs queryString="add-certificates-to-rule">
     <TabItem value="createrule" default>
       <TabItemLabel>
         Создать правило
       </TabItemLabel>

       ```bash
       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. Можно скопировать в [панели управления](https://my.selectel.ru/certificates/): в верхнем меню нажмите **Продукты** → **Менеджер сертификатов** → в меню <MoreVerticalIcon /> сертификата выберите **Скопировать UUID**;
       * `<loadbalancer>` — ID или имя балансировщика. Список можно посмотреть с помощью команды `openstack loadbalancer list`.
     </TabItem>

     <TabItem value="updaterule">
       <TabItemLabel>
         Обновить правило
       </TabItemLabel>

       ```bash
       openstack loadbalancer listener set \
         --sni-container-refs <certificate_uuid_1> <certificate_uuid_2> \
         -- <listener>
       ```

       Укажите:

       * `<certificate_uuid_1>`, `<certificate_uuid_2>` — ID сертификатов, которые вы добавили в менеджер сертификатов на шаге 1. Можно скопировать в [панели управления](https://my.selectel.ru/certificates/): в верхнем меню нажмите **Продукты** → **Менеджер сертификатов** → в меню <MoreVerticalIcon /> сертификата выберите **Скопировать UUID**;
       * `<listener>` — ID или имя правила. Список можно посмотреть с помощью команды `openstack loadbalancer listener list`.
     </TabItem>
   </Tabs>

## Добавить mTLS-сертификат для балансировщика \{#add-mtls-certificate}

Протокол mTLS отличается от TLS двусторонней аутентификацией — при установке соединения проверяется не только подлинность сервера, но и подлинность входящего запроса. Для этого в каждой сессии используются два сертификата — для сервера в целевой группе за балансировщиком и для входящего запроса.

1. Загрузите в менеджер сертификатов CA-сертификат, который будет использоваться для аутентификации входящих запросов на балансировщик, — [добавьте его в качестве пользовательского](/certificates-manager/certificates/user-certificates.mdx#add-user-certificate).

2. Загрузите в менеджер сертификатов сертификат, который будет использоваться для аутентификации сервера в целевой группе за балансировщиком, — [выпустите Let's Encrypt® сертификат](/certificates-manager/certificates/lets-encrypt.mdx#issue-lets-encrypt-certificate) или [добавьте пользовательский](/certificates-manager/certificates/user-certificates.mdx#add-user-certificate).

3. [Откройте OpenStack CLI](/cloud-servers/tools/openstack-cli/).

4. Создайте правило с mTLS-сертификатом:

   ```bash
   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. Можно скопировать в [панели управления](https://my.selectel.ru/certificates/): в верхнем меню нажмите **Продукты** → **Менеджер сертификатов** → в меню <MoreVerticalIcon /> сертификата выберите **Скопировать UUID**;
   * `<certificate_uuid_2>` — ID сертификата, который вы добавили в менеджер сертификатов на шаге 2. Можно скопировать в [панели управления](https://my.selectel.ru/certificates/): в верхнем меню нажмите **Продукты** → **Менеджер сертификатов** → в меню <MoreVerticalIcon /> сертификата выберите **Скопировать UUID**;
   * `<loadbalancer>` — ID или имя балансировщика. Список можно посмотреть с помощью команды `openstack loadbalancer list`.

## Заменить TLS(SSL)-сертификат в правиле балансировщика \{#change-certificate}

Если в правило балансировщика нагрузки с HTTPS-протоколом добавлен TLS(SSL)-сертификат и заканчивается срок его действия, его можно заменить — добавить другой сертификат с новой датой окончания действия сертификата.

<Tabs queryString="change-certificate">
  <TabItem value="panel" default>
    <TabItemLabel>
      Панель управления
    </TabItemLabel>

    1. [Добавьте новый пользовательский сертификат в менеджер сертификатов](/certificates-manager/certificates/user-certificates.mdx#add-user-certificate).

    2. В [панели управления](https://my.selectel.ru/vpc/default/lbaas/load-balancers/) в верхнем меню нажмите **Продукты** и выберите **Облачные серверы**.

    3. Перейдите в раздел **Балансировщики** → вкладка **Балансировщики**.

    4. Откройте страницу балансировщика.

    5. Откройте карточку правила.

    6. В строке **TLS-сертификат** нажмите <EditIcon />.

    7. Выберите новый сертификат. Сертификаты с пустым полем `CN` (Common Name) не поддерживаются в облачных балансировщиках нагрузки.

    8. Нажмите <CheckIcon />.
  </TabItem>

  <TabItem value="openstack">
    <TabItemLabel>
      OpenStack CLI
    </TabItemLabel>

    1. [Добавьте новый пользовательский сертификат в менеджер сертификатов](/certificates-manager/certificates/user-certificates.mdx#add-user-certificate).

    2. [Откройте OpenStack CLI](/cloud-servers/tools/openstack-cli/).

    3. Замените сертификат в правиле:

       ```bash
       openstack loadbalancer listener set \
         --default-tls-container-ref <certificate_uuid> \
         -- <listener>
       ```

       Укажите:

       * `<certificate_uuid>` — ID сертификата, который вы добавили в менеджер сертификатов на шаге 1. Можно посмотреть в [панели управления](https://my.selectel.ru/certificates/): в верхнем меню нажмите **Продукты** → **Менеджер сертификатов** → в меню <MoreVerticalIcon /> сертификата выберите **Скопировать UUID**;
       * `<listener>` — ID или имя правила. Список можно посмотреть с помощью команды `openstack loadbalancer listener list`.
  </TabItem>
</Tabs>

<Formbricks />
