JavaRush /Курсы /Docker SELF /Настройка HTTPS (SSL/TLS) с использованием Let's Encrypt

Настройка HTTPS (SSL/TLS) с использованием Let's Encrypt

Docker SELF
7 уровень , 3 лекция
Открыта

1. О чём эта лекция и зачем это нужно

В современном мире HTTPS уже стал стандартом для всех сайтов. Если вы хотите, чтобы ваши пользователи чувствовали себя в безопасности, а Google не понижал ваш сайт в рейтинге поисковой выдачи (да, HTTPS влияет на SEO), вы просто обязаны настроить SSL/TLS. Протокол HTTPS защищает данные, передаваемые между пользователем и сервером, с помощью шифрования, что исключает возможность их перехвата злоумышленниками.

В этой лекции мы шаг за шагом разберём, как бесплатно подключить HTTPS для вашего веб-сервера с помощью Let's Encrypt. Let's Encrypt — это авторитетный центр сертификации (CA), который предоставляет бесплатные сертификаты и инструменты для их установки. Мы также научимся автоматически продлевать наши сертификаты, чтобы избежать головной боли, связанной с их истечением.

HTTP против HTTPS

HTTP (Hypertext Transfer Protocol) — это протокол передачи данных. Он хорош для просмотра кошачьих мемов, НО! Если кто-то подключится к вашей сети Wi-Fi (например, в кафе), он сможет перехватывать данные, которые вы отправляете на сервер (ужас, ваш пароль превратится в "их пароль").

HTTPS (Hypertext Transfer Protocol Secure) — это версия HTTP с добавленным шифрованием. Данные, передаваемые между клиентом и сервером, защищены с помощью SSL/TLS (Secure Sockets Layer / Transport Layer Security). Злоумышленники больше не смогут увидеть содержимое "пакетов" данных, даже если им удастся их перехватить.


2. Установка Let's Encrypt и Certbot

Certbot — это инструмент от разработчиков Let's Encrypt, который позволяет легко получить и настроить SSL-сертификаты для вашего веб-сервера. Он достаточно умный, чтобы сам работать с Nginx или Apache, делая всю грязную работу за нас. Начнём с установки.

Установка Certbot

Убедитесь, что ваш сервер обновлён:

sudo apt-get update
sudo apt-get upgrade

Теперь установим Certbot и его плагины:

  • Для Nginx:

    sudo apt-get install certbot python3-certbot-nginx
    
  • Для Apache:

    sudo apt-get install certbot python3-certbot-apache
    
Интересный факт:

Сам Certbot — это просто Python-код, активно поддерживаемый сообществом. Он легко интегрируется с большинством серверов.


3. Получение SSL-сертификата с помощью Certbot

Для Nginx

Certbot может автоматически настроить HTTPS для вашего сайта, если вы используете Nginx. Введите:

sudo certbot --nginx

Certbot просканирует ваши текущие виртуальные хосты (server блоки в конфигурации). Он спросит, для какого домена вы хотите настроить HTTPS. Убедитесь, что домен указывает на ваш сервер через DNS (например, с помощью A-записи).

Пример вывода:

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: example.com
2: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Выберите ваш домен (например, 1).

Certbot автоматически настроит конфигурацию Nginx и проверит её. После успешной установки вы увидите сообщение вроде:

Congratulations! Your certificate and chain have been saved ...

Теперь ваш сайт доступен по HTTPS. Вы можете проверить это, открыв https://example.com в браузере.


Для Apache

Если вы используете Apache, команда будет немного отличаться:

sudo certbot --apache

Certbot также отсканирует ваши виртуальные хосты (<VirtualHost> блоки) и предложит настроить HTTPS для выбранных доменов. Выберите нужные и Certbot сделает всё за вас.

После завершения процесса вы снова увидите поздравительное сообщение и сможете проверить доступность вашего сайта через HTTPS.


4. Автоматическое обновление сертификатов

Сертификаты Let's Encrypt действительны только 90 дней, поэтому их нужно регулярно обновлять. Certbot может делать это автоматически, но нам нужно убедиться, что всё настроено правильно.

Проверка сроков действия сертификатов

Вы можете проверить, когда истекает срок действия вашего сертификата:

sudo certbot certificates

Вывод покажет ваши домены и дату истечения их сертификатов.

Настройка автоматического обновления

Во время установки Certbot автоматически добавляет задачу в Cron или Systemd Timer для проверки обновлений. Если вы хотите убедиться, что всё работает, добавьте тестовую задачу в Cron:

sudo crontab -e

Добавьте строку:

0 0 * * * certbot renew --quiet

Эта команда проверяет и продлевает сертификаты ежедневно в полночь. Ключ --quiet отключает вывод ненужной информации.

Ручное обновление

Если вы хотите обновить сертификаты вручную (например, для тестов), используйте:

sudo certbot renew

5. Включение автоматического перенаправления HTTP → HTTPS

Ваш сайт всё ещё может быть доступен по HTTP, но это небезопасно. Настроим автоматическое перенаправление всех запросов на HTTPS.

Для Nginx

Certbot может автоматически настроить перенаправление при выдаче сертификата. Если вы не включили это ранее, добавьте перенаправление вручную в ваш конфигурационный файл виртуального хоста:

server {
    listen 80;
    server_name example.com www.example.com;

    return 301 https://$host$request_uri;
}

Перезагрузите Nginx, чтобы применить изменения:

sudo systemctl restart nginx

Для Apache

Certbot также предлагает включить перенаправления автоматически. Если вы пропустили этот шаг, добавьте в ваш файл виртуального хоста:

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

Перезапустите Apache:

sudo systemctl restart apache2

6. Отладка ошибок

Если что-то пошло не так, начните с просмотра логов:

Для Nginx

sudo tail -f /var/log/nginx/error.log

Для Apache

sudo tail -f /var/log/apache2/error.log

Тестирование конфигурации

Также проверьте конфигурацию веб-сервера:

  • Для Nginx:

    sudo nginx -t
    
  • Для Apache:

    sudo apachectl configtest
    

Проверка HTTPS

Убедитесь, что ваш сайт доступен по HTTPS:

curl -I https://example.com

Вы должны увидеть статус 200 OK и строку Strict-Transport-Security, что означает, что HTTPS работает.

Теперь вы готовы к созданию безопасных, защищённых HTTPS сайтов. Ваши пользователи будут довольны, Google — тоже, а вы сможете спать спокойно, зная, что ваши данные защищены от злодеев интернета.

1
Задача
Docker SELF, 7 уровень, 3 лекция
Недоступна
Установка Certbot
Установка Certbot
1
Задача
Docker SELF, 7 уровень, 3 лекция
Недоступна
Получение SSL-сертификата
Получение SSL-сертификата
1
Задача
Docker SELF, 7 уровень, 3 лекция
Недоступна
Автоматизация продления сертификатов
Автоматизация продления сертификатов
1
Задача
Docker SELF, 7 уровень, 3 лекция
Недоступна
Настройка перенаправления HTTP → HTTPS
Настройка перенаправления HTTP → HTTPS
Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Slevin Уровень 57
30 сентября 2025
Шиза у валидатора вернулась.😶 А мы между тем продолжаем искать намёки на Docker в курсе по Docker...😥😥😥