Терминирование TLS-соединений
- Подготовьте облако к работе
- Создайте облачную сеть
- Зарезервируйте статический публичный IP-адрес
- Создайте группы безопасности
- Импортируйте TLS-сертификат сайта в Certificate Manager
- Создайте группу ВМ для сайта
- Загрузите файлы сайта на ВМ
- Создайте группу бэкендов
- Создайте и настройте HTTP-роутер
- Создайте L7-балансировщик
- Проверьте работу хостинга
- Удалите созданные ресурсы
L7-балансировщики Application Load Balancer могут терминировать TLS-соединения: отправлять клиентам сертификаты, дешифровать входящий трафик для отправки бэкендам и шифровать ответы бэкендов для отправки клиентам. Сценарий рассказывает, как настроить балансировщик, чтобы он терминировал TLS-соединения с помощью сертификата из Certificate Manager и перенаправлял HTTP-запросы на HTTPS.
В качестве примера в сценарии используется доменное имя my-site.com
.
Чтобы создать виртуальный хостинг:
- Подготовьте облако к работе.
- Создайте облачную сеть.
- Зарезервируйте статический публичный IP-адрес.
- Создайте группы безопасности.
- Импортируйте TLS-сертификат сайта в Certificate Manager.
- Создайте группу ВМ для сайта.
- Загрузите файлы сайта на ВМ.
- Создайте группу бэкендов.
- Создайте и настройте HTTP-роутер.
- Создайте L7-балансировщик.
- Проверьте работу хостинга.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Перед работой нужно зарегистрироваться в Yandex Cloud и создать платежный аккаунт:
- Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
- На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе
ACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки виртуального хостинга входят:
- плата за постоянно запущенные виртуальные машины (см. тарифы Yandex Compute Cloud);
- плата за использование публичного статического IP-адреса (см. тарифы Yandex Virtual Private Cloud).
Создайте облачную сеть
Все ресурсы, созданные в сценарии, будут относиться к одной облачной сети.
Чтобы создать сеть:
- В консоли управления выберите сервис Virtual Private Cloud.
- Нажмите кнопку Создать сеть.
- Укажите Имя сети:
mysite-network
. - В поле Дополнительно выберите опцию Создать подсети.
- Нажмите кнопку Создать сеть.
Зарезервируйте статический публичный IP-адрес
Для работы виртуального хостинга потребуется статический публичный IP-адрес, который будет назначен L7-балансировщику.
Чтобы зарезервировать адрес:
- В консоли управления выберите сервис Virtual Private Cloud.
- Откройте вкладку IP-адреса. Нажмите кнопку Зарезервировать адрес.
- В открывшемся окне выберите зону доступности
ru-central1-a
. Нажмите кнопку Зарезервировать.
Создайте группы безопасности
Примечание
Группы безопасности находятся на стадии Preview. Если они недоступны в вашей сети, для ресурсов будет разрешен весь входящий и исходящий трафик и дополнительной настройки не требуется.
Группы безопасности содержат правила, которые разрешают балансировщику получать входящий трафик и отправлять его на ВМ, а ВМ — получать этот трафик. В сценарии будут созданы две группы безопасности: для балансировщика и для всех ВМ.
Чтобы создать группы безопасности:
-
В консоли управления выберите сервис Virtual Private Cloud.
-
Откройте вкладку Группы безопасности.
-
Создайте группу безопасности для балансировщика:
-
Нажмите кнопку Создать группу.
-
Укажите Имя группы:
mysite-sg-balancer
. -
Выберите Сеть
mysite-network
. -
В блоке Правила создайте следующие правила по инструкции под таблицей:
Направление
трафикаОписание Диапазон
портовПротокол Тип источника /
назначенияИсточник /
назначениеИсходящий any Весь Любой CIDR 0.0.0.0/0 Входящий ext-http 80 TCP CIDR 0.0.0.0/0 Входящий ext-https 443 TCP CIDR 0.0.0.0/0 Входящий healthchecks 30080 TCP Проверки состояния балансировщика — -
Выберите вкладку Исходящий трафик или Входящий трафик.
-
Нажмите кнопку Добавить правило.
-
В открывшемся окне в поле Диапазон портов укажите один порт или диапазон портов, куда или откуда будет поступать трафик.
-
В поле Протокол укажите нужный протокол или оставьте Любой, чтобы разрешить передачу трафика по всем протоколам.
-
В поле Назначение или Источник выберите назначение правила:
- CIDR — правило будет применено к диапазону IP-адресов. В поле CIDR блоки укажите CIDR и маски подсетей, в которые или из которых будет поступать трафик. Чтобы добавить несколько CIDR, нажимайте кнопку Добавить CIDR.
- Группа безопасности — правило будет применено к ВМ из текущей группы или из выбранной группы безопасности.
- Проверки состояния балансировщика — правило, которое позволяет балансировщику проверять состояние ВМ.
-
Нажмите кнопку Сохранить. Таким образом создайте все правила из таблицы.
-
-
Нажмите кнопку Сохранить.
-
-
Аналогично для ВМ создайте группу безопасности
mysite-sg-vms
и сетьюmysite-network
со следующими правилами:Направление
трафикаОписание Диапазон
портовПротокол Тип источника /
назначенияИсточник /
назначениеВходящий balancer 80 TCP Группа безопасности mysite-sg-balancer
Входящий ssh 22 TCP CIDR 0.0.0.0/0
Импортируйте TLS-сертификат сайта в Certificate Manager
Чтобы пользователи могли обращаться к сайту по защищенному протоколу HTTPS (HTTP over TLS), для него должен быть выпущен TLS-сертификат. Для использования в L7-балансировщике сертификат нужно импортировать в Certificate Manager.
Если у вашего сайта нет сертификата, вы можете получить в Certificate Manager сертификат от Let's Encrypt®. В этом случае дополнительных действий после создания сертификата не потребуется: он — импортируется автоматически.
Чтобы импортировать уже имеющийся сертификат для сайта my-site.com
:
- В консоли управления выберите сервис Certificate Manager.
- Нажмите кнопку Добавить сертификат и выберите пункт Пользовательский сертификат.
- Укажите Имя сертификата:
mysite-cert
. - В поле Сертификат нажмите кнопку Добавить сертификат. Загрузите Файл с вашим сертификатом или укажите его Содержимое и нажмите кнопку Добавить.
- Если ваш сертификат выпущен сторонним центром сертификации, в поле Цепочка промежуточных сертификатов нажмите кнопку Добавить цепочку. Загрузите Файл с цепочкой сертификатов или укажите его Содержимое и нажмите кнопку Добавить.
- В поле Приватный ключ нажмите кнопку Добавить приватный ключ. Загрузите Файл с ключом или укажите его Содержимое и нажмите кнопку Добавить.
- Нажмите кнопку Создать.
Создайте группу ВМ для сайта
Чтобы создать группу ВМ для сайта my-site.com
:
-
В консоли управления выберите сервис Compute Cloud.
-
Откройте вкладку Группы виртуальных машин. Нажмите кнопку Создать группу.
-
Укажите имя группы ВМ:
mysite-ig
. -
В блоке Распределение выберите несколько зон доступности, чтобы обеспечить отказоустойчивость хостинга.
-
В блоке Шаблон виртуальной машины нажмите кнопку Задать.
-
В блоке Выбор образа/загрузочного диска откройте вкладку Cloud Marketplace и нажмите кнопку Посмотреть больше. Выберите продукт LEMP и нажмите кнопку Использовать.
-
В блоке Вычислительные ресурсы:
- Выберите платформу виртуальной машины.
- Укажите необходимое количество vCPU и объем RAM.
Для функционального тестирования сайта хватит минимальной конфигурации:
- Платформа — Intel Cascade Lake.
- Гарантированная доля vCPU — 5%.
- vCPU — 2.
- RAM — 1 ГБ.
-
В блоке Сетевые настройки выберите Сеть
mysite-network
, созданную ранее, и ее подсети. -
Выберите группу безопасности
mysite-sg-vms
, созданную ранее. -
Укажите данные для доступа на виртуальную машину:
-
В поле Логин введите имя пользователя.
-
В поле SSH-ключ вставьте содержимое файла открытого ключа.
Пару ключей для подключения по SSH необходимо создать самостоятельно, см. раздел о подключении к виртуальным машинам по SSH.
Внимание
IP-адрес и имя хоста (FQDN) для подключения к машине назначаются ей при создании. Если вы выбрали вариант Без адреса в поле Публичный адрес, вы не сможете обращаться к ВМ из интернета.
-
-
Нажмите кнопку Сохранить.
-
В блоке Масштабирование укажите Размер группы ВМ — 2.
-
В блоке Интеграция с Application Load Balancer выберите опцию Создать целевую группу и укажите имя группы —
mysite-tg
. Подробнее о целевых группах. -
Нажмите кнопку Создать.
Создание группы ВМ может занять несколько минут. Когда группа перейдет в статус RUNNING
, а все ВМ в ней — в статус RUNNING_ACTUAL
, вы можете загрузить на них файлы веб-сайта.
Загрузите файлы сайта на ВМ
Чтобы проверить работу веб-серверов, загрузите на виртуальные машины файлы index.html
.
<!DOCTYPE html>
<html>
<head>
<title>My site</title>
</head>
<body>
<h1>This is my site</h1>
</body>
</html>
Чтобы загрузить файл на ВМ:
-
В блоке Сеть на странице ВМ в консоли управления найдите публичный IP-адрес ВМ.
-
Подключитесь к ВМ по протоколу SSH.
-
Выдайте права на запись для вашего пользователя на директорию
/var/www/html
:UbuntuCentOSsudo chown -R "$USER":www-data /var/www/html
sudo chown -R "$USER":apache /var/www/html
-
Загрузите на ВМ файлы веб-сайта с помощью протокола SCP.
Linux/macOSWindowsИспользуйте утилиту командной строки
scp
:scp -r <путь до директории с файлами> <имя пользователя ВМ>@<IP-адрес виртуальной машины>:/var/www/html
С помощью программы WinSCP скопируйте локальную директорию с файлами в директорию
/var/www/html
на ВМ.
Создайте группу бэкендов
Целевую группу, созданную вместе с группой ВМ, нужно привязать к группе бэкендов с настройками распределения трафика.
Для бэкендов в группе будут созданы проверки состояния: балансировщик будет периодически отправлять проверочные запросы к ВМ и ожидать ответа в течение определенного периода.
Чтобы создать группу бэкендов для сайта my-site.com
:
- В консоли управления выберите сервис Application Load Balancer.
- Откройте вкладку Группы бэкендов. Нажмите кнопку Создать группу бэкендов.
- Укажите Имя группы бэкендов:
my-site-bg
. - В блоке Бэкенды нажмите кнопку Добавить.
- Укажите Имя бэкенда:
mysite-backend
. - В поле Целевая группа выберите группу
mysite-tg
. - Укажите Порт, на котором ВМ бэкенда будут принимать входящий трафик от балансировщика:
80
. - Нажмите кнопку Добавить проверку состояния.
- Укажите Порт, на котором ВМ бэкенда будут принимать проверочные соединения:
80
. - Укажите Путь, к которому будет обращаться балансировщик при проверке состояния:
/
. - Нажмите кнопку Создать.
Создайте и настройте HTTP-роутер
Группу бэкендов нужно привязать к HTTP-роутеру с правилами маршрутизации.
Чтобы создать HTTP-роутер:
- В консоли управления выберите сервис Application Load Balancer.
- Откройте вкладку HTTP-роутеры. Нажмите кнопку Создать HTTP-роутер.
- Укажите Имя HTTP-роутера:
mysite-router
. - Нажмите кнопку Добавить виртуальный хост.
- Укажите Имя виртуального хоста:
mysite-host
. - В поле Authority укажите доменное имя сайта:
my-site.com
. - Нажмите кнопку Добавить маршрут.
- Укажите Имя маршрута:
mysite-route
. - В поле Группа бэкендов выберите группу
my-site-bg
. - Нажмите кнопку Создать.
Создайте L7-балансировщик
-
В консоли управления выберите сервис Application Load Balancer.
-
Нажмите кнопку Создать L7-балансировщик.
-
Укажите Имя балансировщика:
mysite-alb
. -
В блоке Сетевые настройки выберите группу безопасности
mysite-sg-balancer
, созданную ранее. -
Создайте обработчик для перенаправления HTTP-запросов на HTTPS:
- В блоке Обработчики нажмите кнопку Добавить обработчик.
- Укажите Имя обработчика:
listener-http
. - В блоке Настройки публичного IP-адреса выберите тип Список и IP-адрес, зарезервированный ранее.
- В поле Протокол выберите пункт Перенаправлять на HTTPS.
-
Создайте обработчик HTTPS-запросов:
-
Снова нажмите кнопку Добавить обработчик.
-
Укажите Имя обработчика:
listener-https
. -
В блоке Настройки публичного IP-адреса выберите тип Список и IP-адрес, зарезервированный ранее.
-
В поле Протокол выберите пункт HTTPS.
-
В блоке Основной обработчик выберите сертификат
mysite-cert
и HTTP-роутерmysite-router
. -
Добавьте обработчик SNI для сайта
my-site.com
:- Нажмите кнопку Добавить обработчик SNI.
- Укажите Имя обработчика SNI:
mysite-sni
. - В поле Имена серверов укажите
my-site.com
. - Выберите сертификат
mysite-cert
и HTTP-роутерmysite-router
.
-
-
Нажмите кнопку Создать.
Через 15–20 минут после настройки DNS вы сможете проверить работу сайта.
Проверьте работу хостинга
Чтобы проверить работу хостинга, в браузере откройте сайт по адресу http://my-site.com
— должно произойти перенаправление на страницу https://my-site.com
, где уже подключен TLS-сертификат из Certificate Manager.
Удалите созданные ресурсы
Чтобы остановить работу хостинга и перестать платить за созданные ресурсы: