1. Перевірка поточних сертифікатів
Команда certbot certificates
Почнемо з простого: як дізнатися, які сертифікати вже встановлені на твоєму сервері? Let's Encrypt надає зручний інструмент — certbot. За допомогою команди certbot certificates можна отримати детальну інформацію про поточні сертифікати.
sudo certbot certificates
У результаті ти побачиш щось на кшталт цього:
Found the following certs:
Certificate Name: example.com
Domains: example.com www.example.com
Expiry Date: 2023-12-31 10:00:00+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem
Тут наведені важливі деталі:
- Ім'я сертифіката.
- Домени, охоплені сертифікатом.
- Дата закінчення строку дії (щоб ти міг вчасно його оновити).
- Шлях до файлів сертифіката та приватного ключа.
Корисний лайфхак:
Якщо ти маєш звичку ігнорувати сповіщення про строки дії, то ця команда стане твоїм найкращим другом. Адже ніхто не хоче бути тим програмістом, який дізнається про протермінований сертифікат від розлючених користувачів.
2. Автоматичне оновлення сертифікатів
Що під капотом у Let's Encrypt
Сертифікати Let's Encrypt діють 90 днів, щоб мінімізувати ризики безпеки. Але вручну оновлювати їх кожні 3 місяці — це зовсім не варіант. На щастя, для автоматизації використовується вбудована команда:
sudo certbot renew
Цей процес перевіряє всі сертифікати та автоматично оновлює ті, які вже близькі до закінчення терміну дії.
Налаштування автоматичного оновлення через Cron
Cron — це вбудований інструмент для планування задач у Linux. Він запускає команди за розкладом, і це саме те, що нам потрібно для автоматизації оновлення сертифікатів. Ось як налаштувати Cron для оновлення:
Відкрий редактор
Cronдля поточного користувача:sudo crontab -eДодай наступний рядок у кінець файлу:
0 0 * * * certbot renew --quietЦя команда запускає
certbot renewщодня опівночі. Прапор--quietпригнічує зайвий вивід, тому оновлення відбуватиметься тихо і нікого не турбуватиме.Збережи зміни та вийди з редактора.
Тепер твій сервер буде автоматично оновлювати сертифікати, і можна не хвилюватися за закінчення терміну дії (ну або майже).
3. Ручне оновлення сертифікатів
Іноді автоматизація не вирішує всіх проблем, і доводиться оновлювати сертифікати вручну. Наприклад, якщо ви щойно додали новий домен у конфігурацію сайту, вам потрібно вручну запросити новий сертифікат. Знову на допомогу приходить certbot:
Приклад команди:
sudo certbot renew
Оновлення сертифіката для конкретного домену
Якщо вам потрібно оновити сертифікат, пов'язаний із певним доменом, використовується наступний формат запиту:
sudo certbot certonly --nginx -d example.com -d www.example.com
Тут:
--nginxвказує, що конфігурація буде автоматично застосована до сервера Nginx. Для Apache використовується--apache.- Флаги
-dперелічують домени, для яких потрібен випуск сертифіката.
Після виконання команди Certbot перевірить конфігурацію сервера, запросить новий сертифікат і налаштує його.
4. Сповіщення і моніторинг
Email-сповіщення
Під час встановлення Certbot він запитав вашу email-адресу. Якщо ви її вказали, то будете отримувати сповіщення за 20 днів до закінчення сертифіката. Якщо ви раптом не вказали email чи хочете його змінити, це можна зробити так:
sudo certbot register --update-registration --email newaddress@example.com
Тепер жодна ситуація не застане вас зненацька. Ну, майже.
Перевірка ззовні
Існують сторонні сервіси, які можуть допомогти вам відстежувати термін дії сертифікатів. Наприклад, SSL Labs. Просто введіть адресу сайту, і сервіс перевірить його сертифікат, включаючи термін дії, ланцюжок довіри та рівень безпеки.
5. Видалення непотрібних сертифікатів
Іноді старі сертифікати стають неактуальними, наприклад, якщо ти перестав обслуговувати якийсь домен. Щоб не захаращувати систему, краще їх видалити.
Команда для видалення:
sudo certbot delete
Certbot покаже список доступних сертифікатів і запропонує обрати, який з них видалити.
Корисна порада:
Будь обережним при видаленні сертифікатів, щоб випадково не вимкнути робочий сайт. Завжди перевіряй, що сертифікат більше ніде не використовується.
6. Приклади та відлагодження помилок
Перевірка після оновлення
Після будь-яких змін або оновлень сертифікатів завжди перевіряйте, що сайт працює коректно. Найпростіше це зробити за допомогою curl:
curl -I https://example.com
Очікуваний результат — код HTTP/1.1 200 OK.
Якщо щось пішло не так, в першу чергу дивіться логи:
Для Nginx:
sudo tail -f /var/log/nginx/error.logДля Apache:
sudo tail -f /var/log/apache2/error.log
Часта помилка: "Too Many Requests"
Якщо ви занадто часто запитуєте нові сертифікати, Let's Encrypt може заблокувати вам доступ з помилкою "Too Many Requests". У таких випадках рекомендується використовувати тестовий сервер Let's Encrypt:
sudo certbot certonly --test-cert --nginx -d example.com
Ця команда видає тестовий сертифікат, який не дійсний для реального використання, але допоможе перевірити конфігурацію.
7. Завершальний крок: автоматичний перезапуск веб-сервера
Let's Encrypt оновлює файли сертифікатів, але веб-сервери, такі як Nginx або Apache, не помічають змін, поки їх не перезапустиш. Це також можна автоматизувати. Онови Cron-запис:
0 0 * * * certbot renew --quiet && systemctl reload nginx
Або для Apache:
0 0 * * * certbot renew --quiet && systemctl reload apache2
Тепер після оновлення будь-який сертифікат буде одразу ж застосований до сервера.
Ця лекція націлена на те, щоб ти міг/могла спокійно спати вночі, знаючи, що твої сертифікати оновлюються автоматично, сайти захищені, а ти не отримаєш дзвінок від боса о третій годині ночі зі словами "Користувачі скаржаться, що сайт недоступний". Керування сертифікатами — це важливий навик, який стане у нагоді в реальній роботі, особливо якщо ти плануєш займатися розгортанням великих веб-додатків або DevOps-інженерією.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ