HTTPS Redirecionando para Subdomínio

1

Eu tenho um subdomínio em https://mail.example.com com um certificado válido. No entanto, se alguém acidentalmente digitar https://example.com na barra de endereço, o certificado para o servidor de e-mail será selecionado, exibindo o conteúdo do subdomínio.

Como posso consertar isso usando os arquivos de configuração vhost do apache?

    
por Noel Forte 21.01.2014 / 07:39

3 respostas

1

Você também pode usar

<VirtualHost *:443>
  ServerName example.com
  Redirect permanent / https://mail.example.com/
</VirtualHost>

somente quando seu certificado é válido para cada domínio. O mais estranho sobre isso ao usar https, você também precisará incluir seus certificados para o Vhost.

    
por 21.01.2014 / 17:29
1

Método 1 - use iptables

Isso encaminhará todo o tráfego para as portas 80 & 443 do servidor respondendo a http://example.com ou https://example.com para algum outro servidor usando apenas iptables .

$ sudo iptables -t nat -A PREROUTING -i eth0  -p tcp --dport 80 \
     -m conntrack --ctstate NEW -j DNAT --to www.example.com:80

$ sudo iptables -t nat -A PREROUTING -i eth0  -p tcp --dport 443 \
     -m conntrack --ctstate NEW -j DNAT --to www.example.com:443

$ sudo iptables -t nat -A PREROUTING -m conntrack \
     --ctstate ESTABLISHED,RELATED -j ACCEPT

$ sudo iptables -A POSTROUTING -t nat -j MASQUERADE

Método 2 - usando o Apache

No Apache, você desejará fazer uma regra de reescrita de URL que interceptará essas solicitações e anexará o www. a elas. Algo parecido com isto:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^exmple\.com
RewriteRule ^(.*)$ http://www.example.com/$1 [R=permanent,L]

O R=permanent,L faz com que a regra acima seja invocada apenas 1 vez e, em seguida, os clientes saberão desse ponto em diante para acessar www.example.com. Este é um status de resposta HTTP 301 . Os clientes só saberão se os URLs estão sendo movidos até que sejam reiniciados, portanto, isso precisará permanecer in-loco indefinidamente.

Método # 3 - através do registrador

Não me lembro desse método, mas parece que lembro que, quando você configura um nome de domínio, muitas vezes há opções para mapear o domínio de nível superior para um determinado host. Talvez seu registrador forneça recursos semelhantes.

Este seria o método mais desejável, se plausível, uma vez que manterá seu ambiente mais simples e reduzirá o hops extra que você terá que incorrer agora toda vez que um cliente acessar seu site.

    
por 21.01.2014 / 09:00
0

Como mencionado, você precisará ter um certificado SSL.

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName domain.com
    Redirect permanent / https://www.domain.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName domain.com
  Redirect permanent / https://www.domain.com/
  SSLEngine on
  SSLProxyEngine On
  SSLCertificateFile /etc/apache2/ssl/domain/domain.crt
  SSLCertificateKeyFile /etc/apache2/ssl/domain/domain.key
  SSLCertificateChainFile /etc/apache2/ssl/domain/intermediate.crt
</VirtualHost>
    
por 03.03.2016 / 06:54