Linux Labs

Веб-стек / Ступень 5 из 9

HTTPS в nginx: цепочка и редирект

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 3 из 7 · на машине · 7 мин

Файл полной цепочки

nginx отдаёт клиенту всё, что лежит в файле ssl_certificate, — туда и кладут цепочку.

HTTPS в nginx включают три строки в блоке server:

nginx
listen 443 ssl;
ssl_certificate     /etc/nginx/tls/app.crt;
ssl_certificate_key /etc/nginx/tls/app.key;

listen 443 ssl — порт 443 и TLS на нём, ssl_certificate — файл сертификата, ssl_certificate_key — его закрытый ключ.

Сертификат в файле записан текстом PEM — блоком от -----BEGIN CERTIFICATE----- до -----END CERTIFICATE-----. Файл полной цепочки — такие блоки подряд: первым сертификат сайта, за ним промежуточный. Корень в файл не кладут: он уже есть у клиента. Ключ из ssl_certificate_key nginx сверяет с первым сертификатом файла.

Склеивает файл cat, а записать его в /etc/nginx/tls, куда пишет только root, помогает sudo tee — >/dev/null прячет копию, которую tee печатает на экран:

bash
cat site.crt lab-issuing-ca.crt | sudo tee site-fullchain.crt >/dev/null

Дальше — как с любой правкой nginx: путь к новому файлу в ssl_certificate, sudo nginx -t и sudo systemctl reload nginx. reload возвращается раньше, чем новые процессы nginx начнут отвечать, поэтому проверку запускай отдельной командой.

Упражнение · сделать

Отдай цепочку целиком

Сделай так, чтобы nginx отдавал для app.lab.test сертификат сайта вместе с промежуточным — /etc/nginx/tls/lab-issuing-ca.crt. Конфигурация сайта — /etc/nginx/sites-available/app, сертификаты — в /etc/nginx/tls.

Войти и начать Машина доступна после входа

Цели · 0 из 2

  • Собрать файл цепочки и указать его nginx ещё не выполнена
  • Открыть app.lab.test по HTTPS без ошибки ещё не выполнена
Проверь себя 1 вопрос

Коллега склеил файл цепочки в обратном порядке — cat lab-issuing-ca.crt app.crt — и указал его в ssl_certificate. Что ответит sudo nginx -t?

  • До curl дело не дойдёт: nginx -t не примет файл — ключ сайта не подходит к первому сертификату, Lab Issuing CA.

  • nginx сверяет ключ из ssl_certificate_key с первым сертификатом файла. Первым стоит Lab Issuing CA, а ключ — от сайта.

nginx проверяет ключ по первому сертификату файла, поэтому сертификат сайта стоит первым.

Цели шага

0 из 2
  • Собрать файл цепочки и указать его nginx — ещё не выполнена
  • Открыть app.lab.test по HTTPS без ошибки — ещё не выполнена
Ubuntu 24.04

Цели шага

0 из 2
  • Собрать файл цепочки и указать его nginx — ещё не выполнена
  • Открыть app.lab.test по HTTPS без ошибки — ещё не выполнена
Загрузка…