Инфраструктурные решения на основе «Альт Образование» в СПбГЭТУ «ЛЭТИ» (Иван Хахаев, OSEDUCONF-2021)

Материал из 0x1.tv

(перенаправлено с «20210615G»)
Докладчик
Иван Хахаев.jpg
Иван Хахаев

Обсуждается механизм обеспечения поддержки и обновления SSL-сертификатов от Let’s Encript для сервисов, входящих в состав дистрибутива «Альт Образование». Приводится пример скрипта, обеспечивающего автоматическое обновление таких SSL-сертификатов для web-сервера Apache2 в дистрибутивах АЛЬТ.

Видео

on youtube

Презентация

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 при помощи скрипта, который должен выполнять следующие действия.

  1. Убирать редиректы с HTTP на HTTPS в нужном конфигурационном файле виртуального хоста;
  2. Проверять корректность синтаксиса конфигурационного файла виртуального хоста;
  3. Запрашивать выдачу нового SSL-сертификата;
  4. Восстанавливать убранные редиректы;
  5. Перезапускать сервис httpd2 для использования обновлённых сертификатов.

Ниже приведён пример такого скрипта.

Такой скрипт можно добавить в планировщик задач чтобы своевременно обновлять сертификаты необходимых сайтов. Успешные практические результаты были получены для указанных выше сервисов на основе Apache2 .

В случае обновления сертификата командой сертификат не мог корректно обновиться, но при помощи приведённого выше скрипта обновление сертификата проходит успешно.

Примечания и ссылки

  1. https://vec.etu.ru
  2. https://cloud.etu.ru

Plays:0   Comments:0