HTTPS давно перестал быть роскошью: браузеры помечают HTTP-сайты как «небезопасные», а без шифрования логины и данные форм передаются открытым текстом. Let's Encrypt даёт бесплатные SSL-сертификаты, а Certbot автоматизирует их получение и продление. Настроим HTTPS на Apache за несколько команд.
Что такое Let's Encrypt и Certbot
Let's Encrypt — это некоммерческий центр сертификации, который выдаёт SSL-сертификаты бесплатно. Certbot — официальная утилита, которая получает сертификат, сама прописывает его в конфигурацию веб-сервера и настраивает автоматическое продление. Сертификаты действуют 90 дней и продлеваются автоматически, так что после настройки о них можно забыть.
Что нужно перед началом
Три условия обязательны. Домен, направленный A-записью на IP вашего сервера — Let's Encrypt проверяет, что вы владеете доменом. Работающий сайт на Apache, доступный из интернета на порту 80. И открытые порты 80 (HTTP) и 443 (HTTPS) в фаерволе.
Инструкция актуальна для Ubuntu 22.04, 24.04 и 26.04 LTS.
Шаг 1. Проверяем виртуальный хост
Certbot определяет домен по директиве ServerName в конфигурации Apache. Убедитесь, что она задана. Откройте конфиг вашего сайта:
sudo nano /etc/apache2/sites-available/ваш-сайт.confВнутри блока VirtualHost должны быть строки с вашим доменом:
<VirtualHost *:80>
ServerName eruscus.ru
ServerAlias www.eruscus.ru
DocumentRoot /var/www/html
</VirtualHost>Если правили конфиг — проверьте синтаксис и перезагрузите Apache:
sudo apache2ctl configtest
sudo systemctl reload apache2Шаг 2. Открываем порты в фаерволе
Если используете UFW, разрешите HTTP и HTTPS одним профилем:
sudo ufw allow 'Apache Full'
sudo ufw statusПрофиль «Apache Full» открывает и порт 80, и порт 443.
Шаг 3. Устанавливаем Certbot
Раньше Certbot ставили через apt, но сейчас официальный способ — через snap: так вы получаете самую свежую версию с актуальными протоколами. Установите snap-ядро и Certbot:
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbotСвяжите команду certbot с системным путём, чтобы вызывать её напрямую:
sudo ln -s /snap/bin/certbot /usr/local/bin/certbotПроверьте, что всё встало:
certbot --versionШаг 4. Получаем сертификат
Одна команда — Certbot запросит сертификат, пропишет его в конфигурацию Apache и включит HTTPS. Укажите свой домен (можно несколько через -d):
sudo certbot --apache -d eruscus.ru -d www.eruscus.ruПри первом запуске Certbot задаст несколько вопросов:
Email — для уведомлений о продлении и важных предупреждений безопасности. Укажите рабочий адрес.
Согласие с условиями Let's Encrypt — нужно принять.
Рассылка от EFF — по желанию, можно отказаться.
Редирект — Certbot спросит, перенаправлять ли весь HTTP-трафик на HTTPS. Для боевого сайта выбирайте вариант 2 (Redirect) — тогда все, кто зайдёт по http://, автоматически попадут на https://.
После этого Certbot сообщит об успехе и покажет, где лежат файлы сертификата.
Шаг 5. Проверяем результат
Откройте сайт по https://ваш-домен и посмотрите на замок в адресной строке браузера — он означает, что соединение защищено. Проверьте, что http:// теперь редиректит на https://.
Сертификаты хранятся в /etc/letsencrypt/live/ваш-домен/ — там два ключевых файла: fullchain.pem (цепочка сертификата) и privkey.pem (приватный ключ). Приватный ключ остаётся только на вашем сервере, Let's Encrypt его никогда не видит.
Шаг 6. Проверяем автопродление
Сертификаты Let's Encrypt живут 90 дней, но Certbot ставит systemd-таймер, который дважды в день проверяет сертификаты и продлевает те, у которых осталось меньше 30 дней. Вам ничего делать не нужно.
Проверьте, что автопродление работает, тестовым прогоном (без реального продления):
sudo certbot renew --dry-runЕсли команда прошла без ошибок — продление настроено и сработает автоматически. Посмотреть таймер:
sudo systemctl status snap.certbot.renew.timerПроверка качества настройки
Хотите убедиться, что HTTPS настроен по-хорошему? Прогоните сайт через SSL Labs (ssllabs.com/ssltest) — он выставит оценку от A+ до F и покажет слабые места. Хорошая цель — оценка A или A+.
Если видите A+ — поздравляю, шифрование настроено правильно. Если оценка ниже, отчёт подскажет, что улучшить: обычно это отключение устаревших версий TLS и включение HSTS.
Частые проблемы
Certbot не может подтвердить домен — проверьте, что домен реально указывает на IP сервера (A-запись) и порт 80 открыт и доступен снаружи. Валидация идёт именно через порт 80.
Ошибка «connection refused» или таймаут — порт 80 закрыт фаерволом (в том числе на стороне хостинга или провайдера). Проверьте UFW и настройки облачного фаервола.
Смешанное содержимое (mixed content) — после включения HTTPS часть картинок или скриптов может грузиться по http://. Обновите такие ссылки на https:// или относительные пути, иначе браузер будет ругаться на «частично защищённое» соединение.
Итог
HTTPS через Let's Encrypt — это бесплатно, быстро и автоматически. После настройки сертификат продлевается сам, а посетители видят замок вместо предупреждения «небезопасно». Для любого сайта, который принимает данные форм или логины, это обязательный минимум — особенно если у вас развёрнут phpMyAdmin или другая админка, куда вводятся пароли.