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-инженерией.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ