Рейтинг:0

Apache, как настроить перенаправление нескольких доменов https?

флаг eg

У меня есть апач, работающий под AWS Elastic beanstalk. У меня есть несколько разных доменов, и я хочу, чтобы все они заканчивались определенным доменным именем в HTTPS.

Перенаправление с других доменов, например. https://домен1.com к https://maindomain.com возвращает ошибку сертификата SSL.

В apache у меня есть две конфигурации виртуальных хостов, одна для *:80 и одна для *:443. Оба установлены для maindomain.com. Они были созданы с помощью certbot.

Какой должна быть наилучшая практика, чтобы это работало для всех других доменов? Думаю, мне нужно настроить VirtualHost для каждого домена, но как его настроить, чтобы он работал с перенаправлениями?

Очевидно, что следующий пример не работает, так как возвращает ошибку SSL:

<IfModule mod_ssl.c>
<VirtualHost domain1.com:443>
        ServerName domain1.com
        RedirectPermanent / https://maindomain.com/
</VirtualHost>
</IfModule>

Вот конфигурация Virtualhost *:80 по умолчанию.

<VirtualHost *:80>
        #ServerName maindomain.com
        DocumentRoot /var/www/html
        <Directory /var/www/html>
                Options -Indexes +FollowSymLinks +MultiViews
                AllowOverride All
                Require all granted
        </Directory>
RewriteEngine on
RewriteCond %{SERVER_NAME} =maindomain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Вот конфигурация Virtualhost *:443 по умолчанию.

<IfModule mod_ssl.c>
<VirtualHost *:443>
        #ServerName maindomain.com
        DocumentRoot /var/www/html
        <Directory /var/www/html>
                Options -Indexes +FollowSymLinks +MultiViews
                AllowOverride All
                Require all granted
        </Directory>
ServerName maindomain.com

SSLCertificateFile /etc/letsencrypt/live/maindomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/maindomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Ваша помощь будет очень признательна. Д

Рейтинг:0
флаг ru

Либо вы получаете сертификат с несколькими именами, чтобы охватить все домены, либо, глядя на схему домена, которую вы упомянули, в какой-то момент вы получите ошибку сертификата.

Браузеры теоретически просматривают SAN/CN, чтобы сопоставить имена, найденные там, и имя DNS, которое они используют для подключения, если нет совпадения, вы получите ошибку сертификата.

Если бы другие домены, которые вы использовали, были поддоменами, у вас мог бы быть хотя бы сертификат с несколькими именами или подстановочный знак.

Например, для доменов:

что угодно.example.com вы можете использовать подстановочный знак, например *.example.com включая SAN например например.com даже.

Также обратите внимание, что если у вас есть 1 виртуальный хост с «example.com», запросы на другие имена, достигающие вашего сервера, будут обрабатываться тем же самым виртуальным хостом, поэтому у вас либо есть сертификат с несколькими именами, которые соответствуют всем случаям, либо вам придется создать схему в котором вы можете покрыть их все через разные виртуальные хосты и сертификаты. Все зависит от того, что вы действительно хотите покрыть.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.