Parar a resposta SSL padrão no IP compartilhado usando o SNI

2

Anteriormente, fiz uma pergunta aqui: SSL de domínio único apresentado para todos os domínios em IP compartilhado sobre a configuração segura e não domínios seguros em um único IP.

As opiniões foram misturadas, mas parece que a SNI mantém a solução. Infelizmente, não consigo fazer funcionar conforme necessário.

  • link - Funciona como esperado
  • link - Apresenta o certificado domaina.com, não como esperado. Eu gostaria que ele não respondesse aos pedidos de SSL.

Gostaria que meu servidor enviasse somente o certificado para domaina.com e nenhum outro nome de host, mesmo que isso significasse enviar um erro 403 para clientes não-SNI. Minha configuração atual no Ubuntu Server 12.04 LTS está abaixo:

Ports.conf

…
<IfModule mod_ssl.c>
    NameVirtualHost *:443
    Listen 443
</IfModule>
…

Domínio de um host virtual

<VirtualHost *:80>
    ServerName   domaina.com
    ServerAlias  www.domaina.com
    DocumentRoot /var/www/domaina.com/public
    ErrorLog     /var/www/domaina.com/logs/error.log
    CustomLog    /var/www/domaina.com/logs/access.log combined
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName   domaina.com
    ServerAlias  www.domaina.com
    DocumentRoot /var/www/domaina.com/public
    SSLEngine on
    SSLCertificateFile      /etc/apache2/ssl/domaina.com.crt
    SSLCertificateKeyFile   /etc/apache2/ssl/domaina.key
    SSLCertificateChainFile /etc/apache2/ssl/domaina.com.ca-bundle
</VirtualHost>
</IfModule>

Host virtual do domínio B

<VirtualHost *:80>
    ServerName   domainb.com
    ServerAlias  www.domainb.com
    DocumentRoot /var/www/domainb.com/public
    ErrorLog     /var/www/domainb.com/logs/error.log
    CustomLog    /var/www/domainb.com/logs/access.log combined
</VirtualHost>

apache2ctl -S

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:443                  is a NameVirtualHost
         default server domaina.com (/etc/apache2/sites-enabled/domaina.com:12)
         port 443 namevhost domaina.com (/etc/apache2/sites-enabled/domaina.com:12)
*:80                   is a NameVirtualHost
         default server domaina.com (/etc/apache2/sites-enabled/domaina.com:3)
         port 80 namevhost domaina.com (/etc/apache2/sites-enabled/domaina.com:3)
         port 80 namevhost domainb.com (/etc/apache2/sites-enabled/domainb.com:1)
Syntax OK

Como você pode se livrar dos padrões?

    
por esryl 25.05.2013 / 12:15

2 respostas

5

Você literalmente não pode fazer o que está perguntando enquanto mantém os dois domínios no mesmo endereço IP.

Como é agora, você tem os dois domínios (domaina.com e domainb.com) no mesmo endereço IP. Então você abriu a porta 80 para HTTP e a porta 443 para HTTPS. Como você percebeu, a porta está aberta para todos os domínios no servidor; não pode ser fechado por apenas um domínio enquanto permanece aberto para qualquer outro.

Se você não quiser que o SSL seja aberto para domainb.com, você precisará colocar domainb.com em um endereço IP separado.

    
por 25.05.2013 / 14:18
0

Como alternativa, você poderia apenas usar o .htaccess para redirecionar as solicitações adequadamente. Não é a melhor solução, mas se você tiver que usar um único IP, isso pode funcionar para você.

Assim, o .htaccess do domaina.com pode ter algo como

#redirect domainb https requests
RewriteCond %{HTTP_HOST} ^domainb.com$
RewriteRule ^(.*)$ http://domainb.com%{REQUEST_URI} [L,R=301]
    
por 05.09.2014 / 03:22