[RISH] Настройка поддоменов на сервере, установка wildcard сертификата
[RISH] Как настроить поддомены, установить wildcard-сертификат и оптимизировать Apache
Общие понятия о сертификате Wildcard
(Wildcard) сертификат — это SSL/TLS сертификат, который позволяет защищать неограниченное количество поддоменов одного и того же домена. В отличие от стандартного сертификата, который обычно защищает один конкретный домен (например, example.com), вилдкард-сертификат может защищать все поддомены этого домена (например, *.example.com).
Применяется вилдкард-сертификат, когда у вас есть множество поддоменов и вы хотите использовать один сертификат для их защиты, вместо того чтобы получать и управлять отдельными сертификатами для каждого поддомена.
Преимущества вилдкард-сертификата:
- Экономия денег и времени. Вам не нужно покупать и управлять множеством сертификатов.
- Гибкость. Вы можете добавлять новые поддомены под защиту вилдкард-сертификата без необходимости получения нового сертификата.
- Безопасность. Если приватный ключ вилдкард-сертификата становится известен злоумышленникам, все поддомены становятся уязвимыми.
- Не все серверы поддерживают вилдкард-сертификаты. Некоторые платформы или приложения могут не поддерживать их.
Однако есть и недостатки:
Основы директивы ServerAlias в Apache: управление множественными доменами на одном виртуальном хосте
Директива ServerAlias в веб-сервере Apache позволяет определить дополнительные доменные имена для виртуального хоста. Виртуальный хост позволяет одному серверу Apache обслуживать несколько веб-сайтов на разных доменах или поддоменах.
В общем, вот как это работает:
- Директива ServerName: Эта директива задает основное доменное имя для виртуального хоста. Это имя используется для обслуживания запросов, если не найдено соответствующего ServerAlias.
- Директива ServerAlias: Здесь вы можете указать одно или несколько дополнительных доменных имен для виртуального хоста. Если запрос приходит на один из этих доменов, он будет обработан этим виртуальным хостом.
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com sub.example.com DocumentRoot /var/www/example </VirtualHost>
В этом примере основным доменом для виртуального хоста является example.com, но он также будет обслуживать запросы, приходящие на www.example.com и sub.example.com.
Почему это полезно?
- Можно иметь несколько доменных имен, указывающих на один и тот же сайт, без необходимости создания отдельных виртуальных хостов для каждого домена.
- Это удобно, если у вас есть доменные имена в разных зонах (например, .com, .net, .org), но они должны указывать на один и тот же сайт.
- Позволяет легко настроить перенаправление с www на без www или наоборот.
# Виртуальный хост для основного домена и доменов в разных зонах <VirtualHost *:80> ServerName yoursite.com ServerAlias www.yoursite.com yoursite.net www.yoursite.net yoursite.org www.yoursite.org DocumentRoot /var/www/yoursite # Перенаправление с www на без www RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] </VirtualHost>
Важно помнить, что правильная конфигурация Apache с использованием ServerAlias и других директив требует понимания основ виртуального хостинга и знания работы вашего веб-сервера.
Конфигурация веб-сервера RISH для работы с поддоменами с использованием директивы ServerAlias
Для начала, зарегистрируйте необходимые поддомены у вашего доменного регистратора. Укажите для каждого из них запись A, которая будет указывать на IP-адрес вашего сервера. Дополнительно создайте поддомен _acme-challenge
и добавьте к нему TXT запись, полученную от автоматического бота.
Произведите конфигурацию следующих файлов, добавив в них директиву ServerAlias:
/etc/httpd/conf.d/site.com-le-ssl.conf /etc/httpd/conf.d/site.com.conf
После этого ваш веб-сервер будет готов к процессу получения сертификата. Обратите внимание: нет необходимости создавать все поддомены сразу, так как один Wildcard сертификат может покрыть все поддомены основного домена.
Процедура получения Wildcard сертификата от Let’s Encrypt
Несмотря на коммерческие предложения многих хостинг-провайдеров, можно получить бесплатный Wildcard сертификат от Let’s Encrypt. Для этого выполните следующую команду на сервере RISH через SSH:
certbot certonly --manual -d 'yourdomain.com' -d '*.yourdomain.com'
В ответ на выполнение команды, автоматический бот предоставит вам TXT запись. Добавьте эту запись к ранее созданному поддомену _acme-challenge
и ко вторичному домену.
После завершения процедуры, сертификат будет сохранён по следующему пути:
Include /etc/letsencrypt/options-ssl-apache.conf SSLCertificateFile /etc/letsencrypt/site.com-0001/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/site.com-0001/privkey.pem
Данные пути следует добавить в конфигурационные файлы site.com-le-ssl.conf
и site.com.conf
на вашем сервере.
После всех настроек перезагрузите Апач (на крайний случай веб-сервер).
sudo systemctl restart httpd
Получение Wildcard сертификата от Let’s Encrypt без необходимости прописывания путей
certbot --apache -d 'yourdomain.com' -d '*.yourdomain.com'
Теперь в команде используется флаг --apache, который подразумевает, что Certbot будет пытаться автоматически настроить ваш Apache веб-сервер для использования нового сертификата.