JavaRush /Курси /Docker SELF /Налаштування HTTPS (SSL/TLS) з використанням Let's Encryp...

Налаштування 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 — теж, а ви зможете спокійно спати, знаючи, що ваші дані захищені від злодіїв інтернету.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ