Как привязать домен к серверу Ubuntu + Apache (инструкция)

Постараюсь максимально коротко, по принципу шпаргалок. Чтобы всё работало, ваш сервер должен быть настроен согласно рекомендациям в этой статье. Для удобства, вот небольшое оглавление по данной шпаргалке:

  • Создание папки с сайтом и файла конфигурации;
  • Создание бесплатного SSL сертификата Let’s Encrypt;
  • Бонус 1: Создание самоподписанного SSL сертификата;
  • Бонус 2: Настройка перенаправлений (редиректов) с http на https

Создание папки с сайтом и файла конфигурации;

Для начала переходим в /var/www/html и создаём там папку с именем нашего домена. В моём случае это icopydoc.com. Для теста заливаю в эту папку файл index.html

Теперь переходим в /etc/apache2/sites-available/ и создаём в ней файл с расширением conf, имя которого соответствует нашему домену. В моём случае файл будет называться icopydoc-com.conf, у вас вместо icopydoc.com будет что-то другое.

Настройка домена на сервере Ubuntu плюс Apache

Открываем созданный на предыдущем шаге файл icopydoc-com.conf и наполняем его следующей информацией:

<VirtualHost *:80>
    ServerAdmin admin@icopydoc.com
    ServerName icopydoc.com
    ServerAlias www.icopydoc.com
    DocumentRoot /var/www/html/icopydoc.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Подключаем файл конфигурации. Для этого в консоли сервера вводим команду:

sudo a2ensite icopydoc-com.conf

Завершающим шагом перезагружаем наш Апач

sudo service apache2 restart

Создание бесплатного SSL сертификата Let’s Encrypt на Ubuntu + Apache

Установка Certbot

Для начала установим пакет certbot, а также пакет python3-certbot-apache, который позволит в дальнейшем перевыпускать SSL-сертификаты автоматически.

sudo apt install certbot python3-certbot-apache

Настройка брандмауэра

Если включён файрволл, то далее необходимо разблокировать трафик HTTPS. Для этого, активируйте профиль Apache Full и перезапустите файрволл:

sudo ufw allow 'Apache Full'
sudo ufw disable
sudo ufw enable

Проверьте открытые порты командой:

sudo ufw status

Должно быть примерно так, как на картинке (открыт Apache Full и отсутствовать просто Apache):

firewall status

Получение SSL-сертификата Let’s Encrypt

Теперь мы можем бесплатно получить сертификат Let’s Encrypt:

sudo certbot --apache

Если вы запускаете certbot впервые, вам будет предложено ввести адрес электронной почты, который будет использоваться для отправки уведомлений об обновлениях и ошибках. Введите действующий email и нажмите Enter. После этого вам будет предложено принять условия использования Let’s Encrypt. Для этого нажмите Y и Enter:

certbot

Затем certbot спросит, хотите ли вы подписаться на рассылку с новостями и объявлениями. Рекомендую отказаться, нажав N и далее Enter.

После этого Certbot запросит список доменов, для которых необходимо активировать HTTPS-соединение. Указанные домены будут автоматически взяты из конфигурации виртуального сервера Apache, поэтому необходимо убедиться, что ваш виртуальный сервер содержит корректные настройки ServerName и ServerAlias. Если вы хотите включить HTTPS-шифрование для всех указанных доменных имен (рекомендуется), оставьте командную строку пустой и нажмите Enter для продолжения. В противном случае укажите домены, на которых требуется активировать HTTPS, разделяя их запятыми или пробелами, затем нажмите Enter

Получение сертификата Let’s encrypt для Apache в Ubunty 22.04

Далее вам будет предложено указать, хотите ли вы включить для сайтов автоматическую переадресацию с HTTP на HTTPS. Выберите 2, чтобы включить перенаправление, или 1, если вы хотите оставить HTTP и HTTPS.

После этого настройка Certbot будет завершена, и вам будут представлены последние замечания о вашем новом сертификате: здесь вы узнаете, где найти сгенерированные файлы и как протестировать вашу конфигурацию с помощью внешнего инструмента, который анализирует подлинность вашего сертификата.

Получение Let’s Encrypt сертификата на Апач и Убунту

Для проверки, что всё получилось, перезагрузить свой сайт, указав https://, и обратите внимание на индикатор безопасности в браузере. В большинстве браузеров будет гореть зеленый замочек в адресной строке.

Тестирование автоматического обновления сертификата

Поскольку сертификаты Let’s Encrypt действительны только в течение 90 дней нужно сразу автоматизировать процесс их продления. Делается всё очень просто. Нужно протестировать процесс обновления, запустив так называемый "сухой прогон":

sudo certbot renew --dry-run

Если все работает корректно, значит, вы успешно настроили сертификат Let’s Encrypt для своего веб-сервера Apache. Certbot автоматически обновит ваши сертификаты и перезапустит Apache, чтобы применить изменения.

сухой прогон обновления ssl сертификата

Если автоматическая генерация сертификата не стартует, то система Let’s Encrypt отправляет уведомление на указанный адрес электронной почты для предупреждения о завершении срока действия существующего сертификата. В этом случае вам нужно будет создать новый сертификат самостоятельно.

Бонус 1: Создание самоподписанного SSL сертификата

В качестве бонуса хочу показать, как можно создавать самоподписные SSL сертификаты. Поскольку данный способ не требует коннекта с сервером сертификации, то будет выдавать предупреждения многими браузерами и антивирусами, а значит его лучше не использовать на рабочих проектах. Однако, знать о его существовании всё же стоит. Итак, пошагово начнём настройку протокола самоподписного SSL на Ubuntu + Apache.

Для начала открываем 443-й порт и проверяем, что всё получилось:

ufw allow 443/tcp
sudo ufw disable
sudo ufw enable
sudo ufw status

Генерируем SSL сертификат для нашего сайта:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/icopydoc-com_key.key -out /etc/ssl/icopydoc-com_crt.crt

где:

  • req -запрос на создание сертификата
  • -x509 - создание самоподписанного сертификата
  • -days - время действия сертификата
  • -keyout - путь, куда поместим файл ключей;
  • -out - путь, куда поместим файл сертификата

Теперь открываем созданный нами ранее файл конфигурации icopydoc-com.conf

nano /etc/apache2/sites-available/icopydoc-com.conf

Добавляем правила для 443 порта:

<VirtualHost *:443>
        ServerAdmin admin@icopydoc.com
        ServerName icopydoc.com
        ServerAlias www.icopydoc.com
        DocumentRoot /var/www/html/icopydoc.com
        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        #Include conf-available/serve-cgi-bin.conf
        SSLEngine on
        SSLCertificateFile /etc/ssl/icopydoc-com_crt.crt
        #SSLCertificateChainFile /etc/ssl/icopydoc-com_ca.crt
        SSLCertificateKeyFile /etc/ssl/icopydoc-com_key.key
</VirtualHost>

Если вы хотите, чтобы ваш сайт был доступен только по протоколу https то вам нужно будет либо изменить содержимое блока <VirtualHost *:80>, добавив перенаправление, либо в корень сайта загрузить файл .htaccess и настроить редиректы в нём. Подробнее оба варианта будут рассмотрены ниже.

Перезапускаем Апач:

apachectl restart

Пробуем открыть наш сайт по протоколу https. Т.к сертификат самоподписной, то браузере выдал предупреждение (то самое, о котором я говорим в самом начале), однако сайт благополучно открылся:

Сайт на Апач открылся по протоколу https

Бонус 2. Настройка перенаправлений (редиректов) с http на https

Если вы настраивали сертификат Let’s Encrypt по основной инструкции из данного урока, то надобности в прописании редиректов, вероятно, не возникнет. Будет работать и так. А вот при создании самоподписанного сертификата - однозначно понадобится.

Итак, включим модуль перенаправлений на сервере Апач:

sudo a2enmod rewrite

Способ 1. Через .htaccess

перейдём в корневую папку с файлами нашего сайта и создадим в ней файл .htaccess:

nano .htaccess

Добавим правила и сохраним файл:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

Способ 2. Через файл conf

Откроем уже привычным нам способом файл конфигурации нашего сайта icopydoc-com.conf и добавим в блок настроек для 80-го порта строку с редиректом:

Redirect / https://www.icopydoc.com/

чтобы было понятнее, вот весь блок целиком:

<VirtualHost *:80>
    ServerAdmin admin@icopydoc.com
    ServerName icopydoc.com
    ServerAlias www.icopydoc.com
    Redirect / https://www.icopydoc.com/
    DocumentRoot /var/www/html/icopydoc.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Сохраним файл и перезапустим Apache:

sudo service apache2 restart

После этого редирект с http на https будет настроен.

Теперь вы знаете, как настроить домен на сервере Убунту+Апач+SSL.

Рейтинг: 5

2023-11-12 / / 0 комментариев / Про кодинг и сервер / ,