Eu tenho um apache em execução no AWS Elastic beanstalk. Tenho vários domínios diferentes e quero que todos terminem em um nome de domínio específico, em HTTPS.
O redirecionamento de outros domínios, por exemplo, https://domain1.com para https://maindomain.com retorna um erro de certificado SSL.
No apache, tenho duas configurações de host virtual, uma para *:80 e outra para *:443. Ambos são definidos para o maindomain.com. Eles foram criados com certbot.
Qual deve ser a melhor prática para que isso funcione para todos os outros domínios? Acho que preciso configurar um VirtualHost por domínio, mas como ele deve ser configurado para que funcione com redirecionamentos?
Obviamente, o exemplo a seguir não funciona, pois retorna um erro SSL:
<IfModule mod_ssl.c>
<VirtualHost domain1.com:443>
ServerName domain1.com
RedirectPermanent / https://maindomain.com/
</VirtualHost>
</IfModule>
Aqui está a configuração padrão do 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>
Aqui está a configuração padrão do 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>
Sua ajuda será muito apreciada. D
Ou você obtém um certificado com vários nomes para cobrir todos os domínios ou, olhando para o esquema de domínio que você mencionou, você receberá um erro de certificado em algum momento.
Os navegadores teoricamente olham para SAN/CN para corresponder aos nomes encontrados lá e ao nome DNS que eles estão usando para se conectar, se não houver correspondência, você receberá um erro de certificado.
Se outros domínios que você estava usando fossem subdomínios, você poderia ter pelo menos um certificado de vários nomes ou um curinga.
Por exemplo para domínios:
what.example.com você pode usar um curinga como * .example.com incluindo uma SAN para example.com mesmo.
Observe também que se você tiver 1 virtualhost com "example.com", as solicitações de outros nomes que chegam ao seu servidor serão tratadas por esse mesmo virtualhost, portanto, você tem um certificado com vários nomes que corresponde a todos os casos ou terá que criar um esquema em que você pode cobri-los todos através de diferentes hosts virtuais e certificados. Tudo depende do que você realmente quer cobrir.