Отчёт о выполнении: настройка SSL (Let's Encrypt) для lms.cdto.life

Дата: 12.02.2026
Задачи Redmine: #6 (Moodle 4.5: веб-сервер и SSL), #49 (SSL Let's Encrypt)
Результат: Сертификат выпущен и установлен в HAProxy BBB. HTTPS https://lms.cdto.life работает с валидным сертификатом.


Предпосылки

  • DNS A-запись lms.cdto.life указывает на IP сервера (89.179.242.240).
  • Трафик 80/443 приходит в контейнер BBB-CONT22-1; SSL терминация — в HAProxy (bind *:443 ssl crt /etc/haproxy/certs/).
  • Порт 80 из интернета доступен (ACME HTTP-01 возможен).
  • В BBB установлены certbot и nginx; HAProxy уже обслуживает другие домены (school.cdto.life, tasks.cdto.group и др.).

Описание процесса (успешное исполнение)

1. Подготовка

  • Создан скрипт scripts/issue-lms-cdto-life-cert.sh по образцу issue-tasks-cdto-group-cert.sh: выпуск сертификата в контейнере BBB (certbot --standalone), копирование в /etc/haproxy/certs/, перезагрузка HAProxy.
  • Документация: docs/setup/ssl-lms-cdto-life.md (HTTP-01 и DNS-01, продление, проверка).

2. Выполненные шаги

  1. На хосте выполнено: sudo /home/cdto/DENKART/scripts/issue-lms-cdto-life-cert.sh.
  2. Скрипт в контейнере BBB-CONT22-1:
  3. остановил nginx (освобождение порта 80);
  4. выполнил certbot certonly --standalone -d lms.cdto.life --non-interactive --agree-tos --email admin@cdto.life;
  5. запустил nginx;
  6. создал /etc/haproxy/certs/lms.cdto.life.pem (fullchain.pem + privkey.pem);
  7. выполнил systemctl reload haproxy.
  8. Let's Encrypt успешно выдал сертификат (срок действия до 2026-05-13).

3. Результат

  • Сертификат: /etc/letsencrypt/live/lms.cdto.life/ в BBB (fullchain.pem, privkey.pem).
  • Файл для HAProxy: /etc/haproxy/certs/lms.cdto.life.pem в BBB.
  • https://lms.cdto.life открывается с валидным сертификатом (CN=lms.cdto.life), без предупреждений браузера.
  • Продление: certbot.timer в BBB продлевает сертификат; для автоматического обновления HAProxy после продления рекомендуется добавить deploy-hook (инструкция в docs/setup/ssl-lms-cdto-life.md).

4. Артефакты

Артефакт Назначение
scripts/issue-lms-cdto-life-cert.sh Повторный выпуск/обновление сертификата (HTTP-01)
docs/setup/ssl-lms-cdto-life.md Описание процесса, DNS-01, продление, проверка
docs/setup/moodle-phase5-webserver-ssl-checklist.md Чек-лист Фазы 5, раздел SSL

Рекомендации для других доменов

  • Для нового домена с доступным портом 80: скопировать issue-lms-cdto-life-cert.sh, заменить DOMAIN и при необходимости EMAIL; выполнить скрипт от root на хосте.
  • При недоступности порта 80: использовать DNS-01 (docs/setup/ssl-lms-cdto-life.md, вариант 2).
  • После продления certbot обновлять соответствующий .pem в /etc/haproxy/certs/ и выполнять systemctl reload haproxy (или настроить renewal-hooks/deploy).

Связанные документы: План установки Moodle 4.5, Чек-лист Фазы 5, Акт №8 (Фаза 5).