Глава 7: Защита — Certbot и SSL Let's Encrypt
Современный интернет немыслим без шифрования. Наш BookStack в файле Docker Compose уже настроен на работу через защищенное соединение (параметр APP_URL=https://...). Если мы попытаемся оставить сайт на обычном HTTP, браузеры будут ругаться на небезопасное подключение, а сам BookStack не сможет правильно загружать скрипты и стили.
Для решения этой задачи мы воспользуемся утилитой Certbot от некоммерческого центра сертификации Let's Encrypt, которая автоматически выпустит, установит и будет сама продлевать бесплатный SSL/TLS-сертификат.
1. Установка Certbot и плагина для Nginx
В современных версиях Debian самым надежным и рекомендуемым разработчиками способом установки Certbot является пакетный менеджер snapd, однако для домашнего сервера классическая установка из официальных репозиториев apt остается наиболее простой и стабильной.
Установите сам Certbot и специальный модуль интеграции с веб-сервером Nginx:
sudo apt update && sudo apt install certbot python3-certbot-nginx -y
2. Запуск процесса выпуска SSL-сертификата
ВАЖНОЕ НАПОМИНАНИЕ перед запуском: Убедитесь, что вы уже выполнили настройки из предыдущих глав: порты 80 и 443 на роутере проброшены на ваш сервер (Глава 3), а DNS-запись для поддомена (например, wiki.myserver.ru) уже обновилась и ведет на ваш внешний белый IP (Глава 4).
Запустите Certbot, указав ему автоматически настроить конфигурацию Nginx для вашего конкретного поддомена:
sudo certbot --nginx -d wiki.myserver.ru
Что будет происходить в процессе (Интерактивный режим):
- Ввод Email: Утилита попросит вас ввести ваш действующий адрес электронной почты. На него Let's Encrypt пришлет уведомление, если с вашим сертификатом что-то случится или сломается автоматическое продление. Введите email и нажмите
Enter. - Условия соглашения: Попросят согласиться с условиями обслуживания (Terms of Service). Нажмите
Y(Yes) иEnter. - Рассылка: Спросят, хотите ли вы поделиться своим адресом с некоммерческим фондом EFF для получения новостей. Нажмите
N(No) илиYна ваше усмотрение. - Проверка (ACME Challenge): Certbot свяжется с серверами Let's Encrypt. Те сделают проверочный запрос на ваш домен
http://wiki.myserver.ru. Наш Nginx, который мы настроили в Главе 6, поймает этот запрос и подтвердит: "Да, этот домен действительно принадлежит этому серверу".
Если всё прошло успешно, в консоли появится вожделенное сообщение: Successfully received certificate. / Successfully deployed certificate for wiki.myserver.ru
3. Что Certbot сделал за кулисами?
Certbot — невероятно умная утилита. Она не просто скачала файлы ключей безопасности в папку /etc/letsencrypt/live/, она самостоятельно залезла в наш созданный файл /etc/nginx/sites-available/wiki.myserver.ru и автоматически переписала его:
- Добавила новые блоки для работы на порту 443 (HTTPS).
- Прописала пути к сгенерированным секретным SSL-ключам и сертификатам.
- Создала автоматический, безопасный редирект (перенаправление): теперь если пользователь введет в браузере старый адрес с
http://, Nginx сам мгновенно перекинет его на защищенныйhttps://.
4. Проверка автоматического продления сертификатов
Сертификаты Let's Encrypt выдаются ровно на 90 дней. Однако ручками обновлять их каждые три месяца не придется. При установке Certbot автоматически создает в системе фоновый таймер (cron-задачу или системный таймер systemd), который дважды в день проверяет состояние сертификатов и обновляет те, до конца срока которых осталось меньше 30 дней.
Вы можете прямо сейчас протестировать, что режим симуляции автоматического продления работает без ошибок:
sudo certbot renew --dry-run
Если в конце вы увидите фразу Congratulations, all simulated renews succeeded — ваша система автоматизации защиты работает безупречно.
Итог главы: Наш конфигурационный файл полностью сформирован и защищен самым современным шифрованием. Файлы сертификатов лежат на диске сервера. Нам остался финальный, 8-й шаг — активировать этот конфиг внутри Nginx, чтобы запустить нашу базу знаний в жизнь!
Нет комментариев для отображения
Нет комментариев для отображения