
Цель урока: Научиться обеспечивать безопасность наших сайтов, переведя их с http:// на https://. Мы установим и настроим бесплатный SSL-сертификат от центра сертификации Let's Encrypt с помощью автоматизированного инструмента certbot.
Часть 1: Теория. Что мы сейчас будем делать?
Вспоминаем Урок 40. Чтобы наш сайт мог работать по HTTPS, ему нужен SSL-сертификат - цифровой "паспорт", который выполняет две функции:
-
Подтверждает подлинность: Говорит браузеру, что домен project-one.local действительно принадлежит этому серверу.
-
Обеспечивает шифрование: Предоставляет публичный ключ для шифрования трафика.
Раньше получение сертификата было сложным и платным процессом. Но Let's Encrypt - это бесплатный и автоматизированный Центр Сертификации (CA). Для работы с ним мы будем использовать программу-клиент certbot.
Как работает certbot?
-
Вы говорите certbot: "Я хочу получить сертификат для домена mydomain.com, который работает на веб-сервере Nginx".
-
certbot связывается с серверами Let's Encrypt.
-
Проверка владения: Чтобы убедиться, что вы действительно владеете доменом, Let's Encrypt просит certbot выполнить "контрольное задание". certbot автоматически создает на вашем сервере специальный временный файл.
-
Сервер Let's Encrypt пытается скачать этот файл по адресу http://mydomain.com/.well-known/acme-challenge/ИМЯ_ФАЙЛА.
-
Если файл успешно скачан, значит, вы контролируете сайт. Проверка пройдена.
-
certbot получает SSL-сертификат и, что самое главное, автоматически изменяет конфигурацию Nginx, чтобы включить HTTPS и использовать этот сертификат.
-
certbot также настраивает cron (Урок 21), чтобы сертификат, который действует 90 дней, автоматически продлевался без вашего участия.
Важное требование:
Для прохождения проверки Let's Encrypt ваш домен должен "смотреть" на публичный IP-адрес вашего сервера. Наш "трюк" с файлом hosts и доменами .local здесь не сработает. Для этого урока вам понадобится реальное доменное имя, направленное на ваш VDS.
Часть 2: Практика. Подготовка
Шаг 1: Направляем домен на сервер
Зайдите в панель управления вашего регистратора доменов (где вы покупали домен) и создайте A-запись.
-
Хост / Имя: @ (означает основной домен) или www (для субдомена www).
-
Значение / Указывает на: ВАШ_ПУБЛИЧНЫЙ_IP_АДРЕС_СЕРВЕРА.
-
TTL: Оставьте по умолчанию.
Пример: Если ваш домен example.com, вы создаете A-запись для example.com и, возможно, для www.example.com, обе указывающие на ваш IP.
Примечание: Обновление DNS может занять от нескольких минут до нескольких часов. Прежде чем продолжать, убедитесь, что домен "видит" ваш сервер. Проверить это можно командой ping your_domain.com с вашего локального компьютера - она должна возвращать IP вашего сервера.
Шаг 2: Настраиваем Nginx под реальный домен
Давайте переделаем наш конфиг project-one.local под ваш настоящий домен.
-
Переименуем файл конфигурации для ясности:
# (на сервере) mv /etc/nginx/sites-available/project-one.local /etc/nginx/sites-available/your_domain.com -
Откроем его и изменим server_name:
nano /etc/nginx/sites-available/your_domain.comНайдите строку server_name и замените project-one.local на ваш реальный домен:
server_name your_domain.com www.your_domain.com; -
Пересоздадим симлинк:
rm /etc/nginx/sites-enabled/project-one.local ln -s /etc/nginx/sites-available/your_domain.com /etc/nginx/sites-enabled/ -
Проверим и перезагрузим Nginx:
nginx -t systemctl reload nginx
Теперь, если вы зайдете в браузере по адресу http://your_domain.com, вы должны увидеть вашу тестовую страницу.
Часть 3: Практика. Установка certbot и получение сертификата
Шаг 1: Установка certbot и плагина для Nginx
certbot имеет плагины для автоматической настройки разных веб-серверов.
apt update
apt install -y certbot python3-certbot-nginx
Шаг 2: Запуск certbot для получения сертификата
Теперь магия. Выполняем одну команду.
# certbot --nginx -d [домен] -d [второй_домен]
certbot --nginx -d your_domain.com -d www.your_domain.com
-
--nginx: Используем плагин для Nginx.
-
-d your_domain.com: Получить сертификат для этого домена. Мы указываем оба варианта (с www и без), чтобы сертификат был действителен для обоих.
Что будет дальше: certbot задаст вам несколько вопросов:
-
Enter email address (used for urgent renewal and security notices): Введите ваш реальный e-mail. Он нужен для уведомлений.
-
Please read the Terms of Service...: Прочтите и согласитесь, введя Y.
-
Willing to share your email address...? Хотите ли вы поделиться e-mail с фондом EFF. Можете выбрать Y или N.
Самый важный вопрос:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
1: No redirect
2: Redirect
Всегда выбирайте 2 (Redirect). Это автоматически настроит Nginx так, чтобы все посетители, заходящие на http://, принудительно перенаправлялись на безопасную https:// версию.
После этого certbot выполнит проверку, получит сертификат и изменит ваш конфигурационный файл Nginx. Вы увидите сообщение Successfully deployed certificate for ....
Шаг 3: Проверка результата
-
В браузере:
-
Откройте ваш сайт по адресу https://your_domain.com (обратите внимание на https://).
-
Вы должны увидеть свою страницу и зеленый замочек в адресной строке (либо надпись подключение защищено).

-
Попробуйте зайти на http://your_domain.com - вас должно автоматически перекинуть на https://.
-
-
На сервере:
-
Загляните в ваш конфигурационный файл your_domain.com, который certbot изменил:
cat /etc/nginx/sites-available/your_domain.com -
Вы увидите, что certbot добавил новый блок server для listen 443 ssl; и прописал пути к файлам сертификата (ssl_certificate и ssl_certificate_key), а также настроил редирект.
-
Шаг 4: Проверка автоматического обновления
Сертификаты Let's Encrypt действуют 90 дней. certbot автоматически создал таймер systemd (или задание cron), который будет регулярно проверять и обновлять сертификаты.
# Проверить "всухую", не будет ли ошибок при обновлении
certbot renew --dry-run
Если команда завершилась без ошибок, значит, автоматическое обновление настроено правильно.
Часть 4: Заключение
Поздравляю! Вы только что проделали один из самых важных шагов для любого веб-сайта - обеспечили его безопасность. Благодаря certbot этот сложный процесс превратился в несколько простых команд. Вы научились:
-
Понимать, как certbot автоматически проверяет владение доменом.
-
Направлять доменное имя на IP-адрес вашего сервера.
-
Устанавливать certbot и его плагин для Nginx.
-
Получать и автоматически устанавливать SSL-сертификат, включая настройку редиректа на HTTPS.
-
Проверять, как работает автоматическое обновление сертификатов.
Теперь ваш сайт защищен, и вы готовы двигаться дальше к настройке более сложных веб-приложений.
На следующем, 47-м уроке, мы добавим еще один важнейший компонент для любого динамического сайта - установим и настроим сервер баз данных MySQL/MariaDB.
Перейти к просмотру - УРОК №47.
Промо-код: PROMO15 - скидка 15%!
Введите при оформлении первого заказа на сайте: Hosting-VDS.com

