Отчёт о выполнении: настройка 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. Выполненные шаги
- На хосте выполнено:
sudo /home/cdto/DENKART/scripts/issue-lms-cdto-life-cert.sh. - Скрипт в контейнере BBB-CONT22-1:
- остановил nginx (освобождение порта 80);
- выполнил
certbot certonly --standalone -d lms.cdto.life --non-interactive --agree-tos --email admin@cdto.life; - запустил nginx;
- создал
/etc/haproxy/certs/lms.cdto.life.pem(fullchain.pem + privkey.pem); - выполнил
systemctl reload haproxy. - 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).