Цель урока: Научиться обеспечивать безопасность наших сайтов, переведя их с http:// на https://. Мы установим и настроим бесплатный SSL-сертификат от центра сертификации Let's Encrypt с помощью автоматизированного инструмента certbot.

Часть 1: Теория. Что мы сейчас будем делать?

Вспоминаем Урок 40. Чтобы наш сайт мог работать по HTTPS, ему нужен SSL-сертификат - цифровой "паспорт", который выполняет две функции:

  • Подтверждает подлинность: Говорит браузеру, что домен project-one.local действительно принадлежит этому серверу.

  • Обеспечивает шифрование: Предоставляет публичный ключ для шифрования трафика.

Раньше получение сертификата было сложным и платным процессом. Но Let's Encrypt - это бесплатный и автоматизированный Центр Сертификации (CA). Для работы с ним мы будем использовать программу-клиент certbot.

Как работает certbot?

  1. Вы говорите certbot: "Я хочу получить сертификат для домена mydomain.com, который работает на веб-сервере Nginx".

  2. certbot связывается с серверами Let's Encrypt.

  3. Проверка владения: Чтобы убедиться, что вы действительно владеете доменом, Let's Encrypt просит certbot выполнить "контрольное задание". certbot автоматически создает на вашем сервере специальный временный файл.

  4. Сервер Let's Encrypt пытается скачать этот файл по адресу http://mydomain.com/.well-known/acme-challenge/ИМЯ_ФАЙЛА.

  5. Если файл успешно скачан, значит, вы контролируете сайт. Проверка пройдена.

  6. certbot получает SSL-сертификат и, что самое главное, автоматически изменяет конфигурацию Nginx, чтобы включить HTTPS и использовать этот сертификат.

  7. 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 под ваш настоящий домен.

  1. Переименуем файл конфигурации для ясности:

    # (на сервере)
    mv /etc/nginx/sites-available/project-one.local /etc/nginx/sites-available/your_domain.com
  2. Откроем его и изменим server_name:

    nano /etc/nginx/sites-available/your_domain.com

    Найдите строку server_name и замените project-one.local на ваш реальный домен:

    server_name your_domain.com www.your_domain.com;
  3. Пересоздадим симлинк:

    rm /etc/nginx/sites-enabled/project-one.local
    ln -s /etc/nginx/sites-available/your_domain.com /etc/nginx/sites-enabled/
  4. Проверим и перезагрузим 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

авторское право цифровые решения

Помог ли вам данный ответ? 0 Пользователи считают это полезным (0 голосов)