Инфраструктурные решения на основе «Альт Образование» в СПбГЭТУ «ЛЭТИ» (Иван Хахаев, OSEDUCONF-2021)
Материал из 0x1.tv
- Докладчик
- Иван Хахаев
Обсуждается механизм обеспечения поддержки и обновления SSL-сертификатов от Let’s Encript для сервисов, входящих в состав дистрибутива «Альт Образование». Приводится пример скрипта, обеспечивающего автоматическое обновление таких SSL-сертификатов для web-сервера Apache2 в дистрибутивах АЛЬТ.
Содержание
Видео
Презентация
Thesis
В 2020 году на основе «АЛЬТ Образование» в СПбГЭТУ «ЛЭТИ» были развёрнуты два крупных сервиса — LMS Moodle[1] и «облачное» хранилище NextCloud[2].
Сервисы развёртывались на виртуальных машинах (VM) на кластере из 5 серверов под управлением дистрибутива Proxmox VE 6.2.
Характеристики VM с LMS Moodle:
- ОС «АЛЬТ Образование» 9.1;
- количество зарегистрированных пользователей — около 14000;
- VM с дисковым пространством 4 Тб, RAM 64 Гб, 6 ядер 2,2 ГГц;
- среднее количество пользователей в день — около 2000;
- количество курсов — около 4300.
Характеристики VM с NextCloud:
- ОС «АЛЬТ Образование» 9.1;
- VM с дисковым пространством 20 Тб, RAM 32 Гб, 4 ядра 2,2 ГГц;
- квота на пользователя 10 Гбайт (рассчитано на 2000 пользователей — преподавателей и сотрудников).
Оба сервиса используют стек LAMP.
Одной из задач, решаемых при развёртывании указанных инфраструктурных решений, было обеспечение корректной работы https с подтверждением сертификата. Сертификаты, генерируемые при установке дистрибутива, не подтверждаются каким-либо центром сертификации, поэтому пользователи получают сообщение о вероятной угрозе безопасности.
Популярным решением является использование SSL-сертификатов от Let’s Encrypt. Такое решение связано с бесплатным распространением, простотой получения и внедрения сертификатов, которые подтверждаются центром сертификации Let’s Encrypt .
Однако на wiki сообщества АЛЬТ даётся решение по использованию SSL-сертификатов от Let’s Encrypt для веб-сервера NGINX, в то время как настройки web-сервера Apache2 в дистрибутивах АЛЬТ имеют нюансы, не позволяющие использовать информацию по настройке SSL-сертификатов от Let’s Encrypt для Apache2 из других дистрибутивов.
Поскольку в настройках виртуального хоста по умолчанию для сервиса httpd2 в дистрибутивах «АЛЬТ Образование» настроены редиректы с http на https, подтверждение сервера (домена сайт), на котором расположен сайт, для обновление SSL становится проблематичным.
Это связано с тем, что в процессе обновления сертификата необходимо проверить права на домен. Из-за ограничений безопасности в корпоративной сети СПбГЭТУ «ЛЭТИ» метод обновления SSL через DNS-запросы не подходит, т. к. дополнительные TXT-записи с ключами не прописываются. Поэтому проверка происходит через предоставление HTTP-ресурса с определённым URI. Для корректного подтверждения прав на домен агент Certbot проводит тест-запросы с соответствующими ключами через 80 порт по HTTP .
В ситуациях, когда на виртуальном хосте настроены редиректы c HTTP на HTTPS, при обновлении сертификата возникает ошибка следующего вида:
Domain: aaa.bbb.ru Type: unauthorized Detail: Invalid response from https://aaa.bbb.ru/.well-known/ acme-challenge/549OU8Q5XsKvzZ_I_QpLWS-V2gc0DrlKwH2oSDyWa1A [xxx.xxx.xxx.xxx]: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n \"http://www.w3.org/TR/xhtml1/D"
Получается, что центр сертификации не может подтвердить домен сайта, для которого требуются изменения информации по сертификату. Результатом возникшей проблемы является сообщение:
Возможным решением данной проблемы является возврат к предоставлению информации по HTTP, но вручную каждые три месяца корректировать конфигурационные файлы виртуального хоста неэффективно. Поэтому можно автоматизировать процедуру обновления SSL при помощи скрипта, который должен выполнять следующие действия.
- Убирать редиректы с HTTP на HTTPS в нужном конфигурационном файле виртуального хоста;
- Проверять корректность синтаксиса конфигурационного файла виртуального хоста;
- Запрашивать выдачу нового SSL-сертификата;
- Восстанавливать убранные редиректы;
- Перезапускать сервис httpd2 для использования обновлённых сертификатов.
Ниже приведён пример такого скрипта.
Такой скрипт можно добавить в планировщик задач чтобы своевременно обновлять сертификаты необходимых сайтов. Успешные практические результаты были получены для указанных выше сервисов на основе Apache2 .
В случае обновления сертификата командой сертификат не мог корректно обновиться, но при помощи приведённого выше скрипта обновление сертификата проходит успешно.
Примечания и ссылки
- Хахаев И. А. Снова об оценке электронных образовательных ресурсов // Свободное программное обеспечение в высшей школе : Сборник тезисов XV конференции, Переславль, 07–09 февраля 2020 года / Отв. редактор В.Л. Чёрный. — Переславль: ООО «МАКС Пресс», 2020. — С. 82–85.
- https://linux-hardware.org/?probe=70139de021
- Документация LetsEncrypt. https://letsencrypt.org/ru/docs/ LetsEncrypt. https://www.altlinux.org/LetsEncrypt Как работает Let’s Encrypt. https://letsencrypt.org/ru/how-it-works/
- The Apache HTTP Server Project. https://httpd.apache.org/
Plays:0 Comments:0