sadrix logoSadriX
Гайды

Как включить HTTPS на Apache в Ubuntu: полное руководство

Настройка безопасного соединения для вашего сайта за 15 минут

09 941 просмотров4 мин
0
Поделиться:TelegramVK

Введение

HTTPS стал стандартом для современных веб-сайтов. Он обеспечивает шифрование данных между браузером пользователя и сервером, повышает доверие посетителей и положительно влияет на позиции в поисковых системах. Если вы используете веб-сервер Apache на Ubuntu, включить HTTPS можно несколькими способами. В этом руководстве мы рассмотрим самый простой и бесплатный путь — получение сертификата Let's Encrypt с помощью Certbot, а также ручную настройку самоподписанного сертификата для тестовых целей.

Требования

Прежде чем начать, убедитесь, что у вас есть:

  • Сервер под управлением Ubuntu 20.04, 22.04 или 24.04.

  • Установленный веб-сервер Apache (пакет apache2).

  • Доменное имя, указывающее на IP-адрес вашего сервера (A-запись).

  • Права пользователя с доступом к sudo.

  • Открытые порты 80 и 443 в брандмауэре.

  • Доступ к терминалу сервера (SSH).

Шаг 1: Установка и проверка Apache

Если Apache ещё не установлен, выполните:

sudo apt update
sudo apt install apache2

Проверьте статус службы:

sudo systemctl status apache2

Убедитесь, что сервер отвечает по HTTP. Откройте в браузере http://ваш_домен — должна отобразиться стандартная страница Apache.

Шаг 2: Настройка брандмауэра (UFW)

Если вы используете UFW, разрешите трафик на порты 80 и 443:

sudo ufw allow 'Apache Full'

Проверьте статус:

sudo ufw status

Шаг 3: Установка Certbot

Certbot — официальный клиент Let's Encrypt, который автоматизирует получение и установку сертификатов. Установите его вместе с плагином для Apache:

sudo apt install certbot python3-certbot-apache

Шаг 4: Получение сертификата Let's Encrypt

Запустите Certbot в автоматическом режиме:

sudo certbot --apache

Certbot задаст несколько вопросов:

1. Введите ваш email для уведомлений об истечении сертификата. 2. Примите условия использования (A). 3. Укажите, хотите ли получать рассылку от EFF (по желанию). 4. Выберите домены, для которых нужно получить сертификат (обычно все предложенные). 5. Certbot автоматически настроит виртуальные хосты Apache и предложит перенаправление HTTP → HTTPS. Выберите вариант «Redirect» (перенаправлять).

После успешного завершения сертификаты будут сохранены в /etc/letsencrypt/live/ваш_домен/.

Шаг 5: Проверка работы HTTPS

Откройте сайт по адресу https://ваш_домен. В адресной строке браузера должен появиться значок замка. Также можно проверить конфигурацию Apache:

sudo apache2ctl configtest

Ожидаемый ответ: Syntax OK.

Шаг 6: Ручная настройка самоподписанного сертификата (для тестов)

Если у вас нет домена или вы хотите протестировать HTTPS локально, создайте самоподписанный сертификат:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/apache-selfsigned.key \
-out /etc/ssl/certs/apache-selfsigned.crt

Заполните поля (Common Name — ваш домен или IP). Затем создайте файл конфигурации SSL:

sudo nano /etc/apache2/sites-available/default-ssl.conf

Укажите пути к сертификату и ключу:

SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key

Активируйте модуль SSL и сайт:

sudo a2enmod ssl
sudo a2ensite default-ssl
sudo systemctl reload apache2

Теперь сайт доступен по HTTPS, но браузер будет предупреждать о недоверенном сертификате. Это нормально для самоподписанных сертификатов.

Шаг 7: Настройка перенаправления с HTTP на HTTPS

Certbot обычно уже добавляет перенаправление. Если вы настраивали вручную, откройте конфигурацию вашего сайта:

sudo nano /etc/apache2/sites-available/000-default.conf

Добавьте внутри блока <VirtualHost *:80>:

Redirect permanent / https://ваш_домен/

Или используйте модуль rewrite:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]

Не забудьте включить модуль rewrite:

sudo a2enmod rewrite
sudo systemctl reload apache2

Шаг 8: Автоматическое обновление сертификата

Сертификаты Let's Encrypt действительны 90 дней. Certbot создаёт таймер systemd для автоматического обновления. Проверьте его:

sudo systemctl status certbot.timer

Для тестового обновления выполните:

sudo certbot renew --dry-run

Шаг 9: Настройка параметров SSL (опционально)

Для повышения безопасности можно добавить современные протоколы и шифры. Отредактируйте файл /etc/apache2/mods-available/ssl.conf или конфигурацию виртуального хоста:

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off

После изменений перезагрузите Apache:

sudo systemctl reload apache2

Типичные ошибки

1. Ошибка «Could not reliably determine the server's fully qualified domain name» — добавьте ServerName ваш_домен в /etc/apache2/apache2.conf или в конфигурацию виртуального хоста. 2. Certbot не может получить сертификат — проверьте, что домен указывает на IP сервера, порт 80 открыт, и нет другого веб-сервера, занимающего порт. 3. Браузер показывает «Не защищено» после настройки — возможно, вы используете самоподписанный сертификат или не настроено перенаправление. Для продакшена используйте Let's Encrypt. 4. Ошибка «SSL_ERROR_RX_RECORD_TOO_LONG» — обычно возникает, если Apache слушает HTTPS на порту 80. Проверьте конфигурацию виртуальных хостов. 5. Сертификат не обновляется автоматически — убедитесь, что таймер certbot.timer активен, и проверьте логи /var/log/letsencrypt/letsencrypt.log.

FAQ

Вопрос: Можно ли использовать HTTPS без доменного имени? Ответ: Да, с самоподписанным сертификатом, но браузеры будут показывать предупреждение. Для публичного сайта нужен домен.

Вопрос: Сколько стоит сертификат Let's Encrypt? Ответ: Бесплатно. Let's Encrypt — некоммерческая организация, выпускающая доверенные сертификаты.

Вопрос: Как проверить, что HTTPS работает правильно? Ответ: Используйте онлайн-инструменты, например SSL Labs, или проверьте в браузере наличие замка.

Вопрос: Нужно ли покупать SSL-сертификат? Ответ: Для большинства сайтов достаточно бесплатного Let's Encrypt. Платные сертификаты могут предлагать расширенную поддержку и гарантии.

Вопрос: Что делать, если после настройки сайт не открывается? Ответ: Проверьте логи Apache: /var/log/apache2/error.log и /var/log/apache2/access.log. Также убедитесь, что порт 443 открыт.

Итог

Включение HTTPS на Apache в Ubuntu — важный шаг к безопасности вашего сайта. С помощью Certbot вы можете бесплатно получить доверенный сертификат и настроить автоматическое обновление. Следуя этому руководству, вы сможете защитить данные пользователей и улучшить репутацию ресурса. Не забывайте проверять конфигурацию и обновлять сертификаты вовремя.

Читайте также

Комментарии

Комментарии доступны только зарегистрированным пользователям. Войти

  • Пока нет комментариев. Будьте первым.