Как включить HTTPS на Apache в Ubuntu: пошаговое руководство
Настройка SSL/TLS за 15 минут с бесплатным сертификатом Let's Encrypt
Введение
HTTPS — это стандарт безопасности для современных сайтов. Шифрование трафика защищает данные пользователей, улучшает позиции в поисковых системах и повышает доверие посетителей. Если вы используете веб-сервер Apache на Ubuntu, включить HTTPS можно бесплатно с помощью сертификатов Let's Encrypt.
В этом руководстве мы разберём полный процесс: от установки необходимых пакетов до автоматического продления сертификата. Инструкция подойдёт для Ubuntu 20.04, 22.04 и 24.04 LTS.
Требования
Перед началом убедитесь, что выполнены следующие условия:
Ubuntu 20.04 или новее с правами sudo.
Установленный Apache (пакет
apache2). Проверить:apache2 -v.Зарегистрированное доменное имя, направленное на IP-адрес сервера (A-запись).
Открытые порты 80 и 443 в брандмауэре (UFW или облачный firewall).
Доступ к терминалу сервера по SSH.
Если Apache ещё не установлен, выполните:
sudo apt update
sudo apt install apache2Шаг 1. Проверка DNS и доступности сервера
Убедитесь, что домен указывает на ваш сервер:
dig +short example.comКоманда должна вернуть IP вашего сервера. Если DNS ещё не обновился, подождите 15–30 минут.
Проверьте, что Apache отвечает по HTTP:
curl -I http://example.comОжидаемый ответ — HTTP/1.1 200 OK или 301. Если сайт недоступен, сначала настройте виртуальный хост для порта 80.
Шаг 2. Настройка брандмауэра
Если используется UFW, разрешите профили Apache:
sudo ufw allow 'Apache Full'
sudo ufw statusПрофиль Apache Full открывает порты 80 и 443. Если UFW не установлен, пропустите шаг, но проверьте настройки облачного firewall (AWS Security Groups, Yandex Cloud и т.п.).
Шаг 3. Установка Certbot
Certbot — официальный клиент Let's Encrypt. Установите его вместе с плагином для Apache:
sudo apt update
sudo apt install certbot python3-certbot-apacheПроверьте версию:
certbot --versionШаг 4. Проверка конфигурации Apache
Перед получением сертификата убедитесь, что виртуальный хост корректно настроен. Откройте файл:
sudo nano /etc/apache2/sites-available/example.com.confПример минимальной конфигурации для HTTP:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>Активируйте сайт и перезагрузите Apache:
sudo a2ensite example.com.conf
sudo systemctl reload apache2Шаг 5. Получение SSL-сертификата Let's Encrypt
Запустите Certbot в интерактивном режиме:
sudo certbot --apacheCertbot задаст несколько вопросов:
1. Email — укажите действующий адрес для уведомлений об истечении. 2. Согласие с условиями — введите A. 3. Подписка на рассылку — на ваше усмотрение (Y или N). 4. Выбор доменов — отметьте нужные (например, example.com и www.example.com). 5. Редирект HTTP → HTTPS — выберите 2 (Redirect), чтобы весь трафик шёл по защищённому протоколу.
Certbot автоматически:
получит сертификат;
создаст файл
/etc/apache2/sites-available/example.com-le-ssl.conf;настроит редирект с HTTP на HTTPS;
перезагрузит Apache.
Шаг 6. Проверка работы HTTPS
Откройте сайт в браузере: https://example.com. В адресной строке должен появиться замок.
Проверьте через curl:
curl -I https://example.comОтвет должен содержать HTTP/2 200. Также проверьте редирект:
curl -I http://example.comОжидаемый код — 301 Moved Permanently с заголовком Location: https://example.com/.
Шаг 7. Настройка параметров SSL (опционально)
Для повышения безопасности можно усилить конфигурацию. Откройте файл SSL-хоста:
sudo nano /etc/apache2/sites-available/example.com-le-ssl.confДобавьте внутрь блока <VirtualHost *:443>:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
SSLHonorCipherOrder off
SSLSessionTickets offЭти параметры отключают устаревшие протоколы и слабые шифры. После изменений перезагрузите Apache:
sudo systemctl reload apache2Шаг 8. Настройка автоматического продления
Сертификаты Let's Encrypt действуют 90 дней. Certbot устанавливает таймер systemd для автоматического продления. Проверьте его:
systemctl list-timers | grep certbotТестовая проверка продления:
sudo certbot renew --dry-runЕсли тест прошёл успешно, ничего делать не нужно — продление будет происходить автоматически дважды в день при необходимости.
Шаг 9. Обновление сертификата вручную
Если автоматическое продление не сработало, выполните:
sudo certbot renewДля принудительного продления конкретного домена:
sudo certbot renew --cert-name example.com --force-renewalПосле продления перезагрузите Apache:
sudo systemctl reload apache2Шаг 10. Проверка конфигурации и логов
Перед перезагрузкой всегда проверяйте синтаксис:
sudo apache2ctl configtestОжидаемый вывод: Syntax OK. Логи ошибок Apache:
sudo tail -f /var/log/apache2/error.logЛоги Certbot:
sudo tail -f /var/log/letsencrypt/letsencrypt.logТипичные ошибки
1. Certbot не может подтвердить домен
Причина: DNS не указывает на сервер или порт 80 закрыт. Решение: проверьте dig +short example.com и откройте порт 80.
2. Конфликт виртуальных хостов
Причина: несколько сайтов с одинаковым ServerName или отсутствие ServerAlias. Решение: убедитесь, что каждый домен описан в отдельном файле и a2ensite выполнен.
3. Ошибка "Too many requests"
Причина: превышен лимит запросов Let's Encrypt (5 неудачных попыток в час). Решение: подождите час или используйте staging-сервер: sudo certbot --apache --staging.
4. Сайт не открывается после настройки
Причина: Apache не перезагружен или порт 443 закрыт. Решение: sudo systemctl reload apache2 и sudo ufw allow 'Apache Full'.
5. Смешанный контент (Mixed Content)
Причина: на странице загружаются ресурсы по HTTP (картинки, скрипты). Решение: замените все http:// на https:// в HTML или используйте относительные ссылки.
FAQ
Можно ли получить сертификат без домена? Нет, Let's Encrypt выдаёт сертификаты только на публичные доменные имена. Для локальной разработки используйте самоподписанный сертификат.
Сколько стоит сертификат Let's Encrypt? Бесплатно. Let's Encrypt — некоммерческая организация, поддерживаемая сообществом.
Что будет, если сертификат истёк? Браузеры покажут предупреждение о небезопасном соединении. Продлите сертификат командой sudo certbot renew.
Как перенести сертификат на другой сервер? Скопируйте каталоги /etc/letsencrypt/live/ и /etc/letsencrypt/archive/, затем обновите пути в конфигурации Apache.
Нужно ли покупать платный сертификат? Для большинства сайтов достаточно Let's Encrypt. Платные сертификаты (OV, EV) нужны для корпоративных сайтов с расширенной проверкой.
Как отключить HTTPS и вернуться на HTTP? Удалите SSL-конфиг: sudo a2dissite example.com-le-ssl.conf, затем перезагрузите Apache. Сертификат можно удалить: sudo certbot delete.
Итог
Включение HTTPS на Apache в Ubuntu занимает не более 15 минут. Certbot автоматизирует получение и продление сертификатов, а Apache корректно перенаправляет трафик на защищённый протокол. Регулярно проверяйте срок действия сертификата и следите за логами, чтобы сайт оставался доступным и безопасным.
Читайте также
DeepSeek и Moonshot приписывают обучение новых моделей на ответах GPT-6 Astra
Honor представила смартфон X9e s с батареей 8560 мА·ч — в СНГ у него есть близнец Turbo 5G
Anthropic предупредила инвесторов об экзистенциальных рисках своего ИИ в документах к IPO
Google запустила браузерную игру Odd One Out: нужно найти ИИ-картинку среди фрагментов реальных картин
Комментарии
Комментарии доступны только зарегистрированным пользователям. Войти
- Пока нет комментариев. Будьте первым.
